<오답>
from collections import deque
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
p =list(input().rstrip())
n = int(input())
x = deque(input().rstrip()[1:-1].split(","))
flag = 0
#입력받을 수가 0인 경우 빈 리스트를 반환
if n == 0:
x = deque()
for i in p:
if i =="R":
x.reverse()
elif i == "D":
if x:
x.popleft()
else:
print("error")
flag = 1
break
if flag == 0:
print("["+",".join(x)+"]")
# 뒤집는 함수를 R이 나올때마다 뒤집어야 해서 이게 시간초과의 문제가 됐다. 이를 해결하기 위해서는 R의 개수가 홀수일 때만 뒤집는 것으로 수정하여 진행해야 했다.
<정답>
import sys
from collections import deque
input = sys.stdin.readline
t = int(input())
for i in range(t):
#오른쪽 \n 제거를 위함 rstrip()함수 사용
p = input().rstrip()
n = int(input())
x = input().rstrip()[1:-1].split(",")
queue = deque(x)
rev, front, back = 0, 0, len(queue)-1
flag = 0
# 넣은 원소가 없을 때 빈 리스트를 돌려 준다.
if n == 0:
queue = []
front = 0
back = 0
for j in p:
if j == 'R':
rev += 1
elif j == 'D':
if len(queue) < 1:
flag = 1
print("error")
break
else:
if rev % 2 == 0:
queue.popleft()
else:
queue.pop()
if flag == 0:
if rev % 2 == 0:
print("[" + ",".join(queue) + "]")
else:
queue.reverse()
print("[" + ",".join(queue) + "]")
# R이 짝수일 땐 -> 뒤집기 x (짝수번 뒤집어봐야 똑같으니 popleft() 진행)
# R이 홀수일 땐 -> 뒤집기 O(그러나 계속 뒤집기 불가니 뒤에껄 빼준다. pop() 진행)
# 마지막 결과도 R이 짝수개 있을 땐 그냥 출력 R이 홀수개 있을 땐 뒤집어 출력 해주며 결과적으로 resever 함수는 한 번만 사용하거나 사용하지 않게 함.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][BFS] 1012. 유기농 배추 (파이썬/Python) (0) | 2021.12.12 |
---|---|
[백준][큐 & 덱] 1021. 회전하는 큐 (파이썬/Python) (0) | 2021.12.09 |
[백준][큐 &덱] 10886. 덱 (파이썬/Python) (0) | 2021.12.07 |
[백준][큐 & 덱] 1966. 프린터 큐 (파이썬/Python) (0) | 2021.12.06 |
[백준][동적 계획법/DP] 11052. 카드 구매하기 (0) | 2021.12.03 |