https://www.acmicpc.net/problem/5430
입력 받는 숫자가 [1,2,3,4] 이런 식으로 받기 때문에 처리가 까다롭다. 그리고 함수 R을 사용할때 R이 나올때마다 역순으로 뒤집기를 하면 시간초과에 걸리게 되므로 여러번 사용할 수 없다.
import sys
from collections import deque
t = int(sys.stdin.readline()) #1
for _ in range(t):
p = sys.stdin.readline().rstrip() #2
n = int(sys.stdin.readline()) #3
tmp = sys.stdin.readline().rstrip()
arr = deque(list(tmp[1:-1].split(','))) #4
if n == 0: #5
arr = deque()
R = 0 #6
flag = 1
for i in p:
if i == 'R': #7
R += 1
elif i == 'D': #8
if len(arr) == 0: #9
flag = 0
break
else: #10
if R % 2 == 0:
arr.popleft()
elif R % 2 != 0: #11
arr.pop()
if flag == 0: #12
print('error')
continue
if R % 2 == 0: #13
tmp2 = ','.join(arr)
print(f'[{tmp2}]')
elif R % 2 != 0:
arr.reverse() #14
tmp2 = ','.join(arr)
print(f'[{tmp2}]')
#1 : 테스트케이스 만큼 반복
#2 : 수행할 함수 입력, 반복적인객체라서 list()함수 사용 안해도 됨
#3 : 배열에 들어있는 수의 개수 입력
#4 : 배열을 입력받고 arr[1:-1]로 처음과 끝의 대괄호를 벗겨준 뒤 .split(',')으로 숫자만 나눠서 입력받는다.
#5 : 입력된 배열이 없으면 dp는 빈공간으로 초기화
#6 : 함수 R이 수행된 횟수를 저장해 주는 변수
#7 : 입력된 함수가 'R'이라면 변수 R을 +1
#8 : 입력된 함수가 'D'라면
#9 : dp의 길이가 0이면 빼줄 수 없으므로 flag = 0으로 바꾸고 error 출력 후 반복문 탈출
#10, 11 : R의 횟수가 짝수번이면 가장왼쪽에서 pop 홀수번이면 가장오른쪽에서 pop
#12 : error 출력했으면 반복문 건너뜀
#13 : R함수 횟수가 짝수면 원래대로 돌아오니까 그냥 출력
#14 : R함수 횟수가 홀수면 결국 뒤집어 지니까 reverse함수 실행(파괴함수) 후 출력
1. 문자열 입력받기 [1:-1].split(',')
2. reverse 남발하지 않고 R의 횟수가 짝수인지 홀수인지에 따라 실행하기
3. flag변수로 반복문 탈출과 건너뜀 활용하기
4. arr가 문자열이니까 .join()함수 활용해서 문제의 요구대로 출력하기
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 3085 파이썬(python) : 사탕 게임 (0) | 2022.07.16 |
---|---|
[백준] 2309 파이썬(python) : 일곱 난쟁이 (0) | 2022.07.16 |
[백준] 1021 파이썬(python) : 회전하는 큐 (0) | 2022.07.15 |
[백준] 10844 파이썬(python) : 쉬운 계단 수 (0) | 2022.07.15 |
[백준] 1463 파이썬(python) : 1로 만들기 (0) | 2022.07.14 |