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(']')
3. 마무리
'Computer Science > 알고리즘' 카테고리의 다른 글
[백준 - Python] 15684 - 사다리 조작 (0) | 2023.08.13 |
---|---|
[백준 - Python] 1766 - 문제집 (0) | 2023.08.13 |
[백준 - Python] 18808 - 스티커 붙이기 (0) | 2023.08.03 |
[백준 - Python] 6087 - 레이저 통신 (0) | 2023.08.03 |
[백준 - Python] 3197 - 백조의 호수 (0) | 2023.08.02 |