접근
R 문자가 나왔을 때, 주어진 배열을 실제로 뒤집으면 시간 초과가 뜨게 된다. 따라서 실제로 배열을 뒤집지 않고 문제를 해결할 방법을 찾아야 한다. 나 같은 경우에는 left라는 변수를 만들어 left의 상태에 따라 D 문자가 나왔을 때, 왼쪽 요소를 제거할지, 오른쪽 요소를 제거할지를 결정할 수 있게 해두고, R 문자가 나오면 left 의 상태를 True와 False 사이에 왔다갔다 할 수 있게 해둠으로써 해결했다. (더 좋은 방법이 있으면 제안 부탁드립니다!)
코드
import sys
from collections import deque
n = int(sys.stdin.readline())
for _ in range(n):
iserror = False # 빈 배열에서 D 작업을 했을 때 error를 표기하게 하는 변수
a = str(sys.stdin.readline())
b = int(sys.stdin.readline())
c = sys.stdin.readline()
if b > 0:
d = c[1:-2]
p = list(map(str, d.split(',')))
dq = deque(p)
else:
dq = deque([])
left = True # True일때 정배열, False일때 역배열
for i in range(len(a)):
if a[i] == 'R': # 문자열에서 R 문자가 나올 시 left 변수를 toggle
if left:
left = False
else:
left = True
if a[i] == 'D': # 문자열에서 D 문자가 나올 시 left 상태에 따라 popleft와 pop을 결정
if dq:
if left:
dq.popleft()
else:
dq.pop()
else:
iserror = True
if iserror:
print('error')
else:
if left:
temp = list(dq)
else: # left가 False일 시, dq를 역배열
temp = list(dq)[::-1]
print('[' + ','.join(temp) + ']')
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 1992번: 쿼드트리 (Python) (0) | 2021.04.01 |
---|---|
백준 2630번: 색종이 만들기 (Python) (0) | 2021.04.01 |
백준 19298번: 오큰수 (Python) (0) | 2021.04.01 |
백준 1874번: 스택 수열 (Python) (0) | 2021.04.01 |
백준 9012번: 괄호 (Python) (0) | 2021.04.01 |
최근댓글