Computer Science/알고리즘
[백준 - Python] 5430 - AC
바보1
2023. 8. 4. 00:35
0. 문제 링크
https://www.acmicpc.net/problem/5430
1. 풀이 방법
기본적으로 덱으로 해야 한다. 이유는 링크드 리스트이기 때문에
리스트로 관리한다면 pop(0) 과정에서 리스트의 모든 원소를 앞으로 가져오기 때문에 O(n)의 시간이 걸린다.
그리고 뒤집는 것도 하면 안 된다. 왜냐면 뒤집는 과정이 O(n)이기 때문이다.
따라서 뒤집는 '표시'를 써야한다.
2. 코드
import sys
from collections import deque
input = sys.stdin.readline
if __name__ == "__main__":
T = int(input())
for _ in range(T):
p = list(input().strip())
n = int(input())
maps = deque(input()[1:-2].split(','))
sequence = True # 순방향
for inst in p:
match inst:
case 'R': sequence = not sequence
case 'D':
if n > 0:
maps.popleft() if sequence else maps.pop()
n -= 1
else:
print('error')
break
else:
print('[', end='')
print(','.join(maps), end='') if sequence else print(','.join(reversed(maps)), end='')
print(']')