파이썬의 pop() 함수를 잘 사용하여 풀 수 있음(deque 처럼, pop(0), pop())
+ 문제에 reverse 기능이 있는데, 이런 reverse가 나올 떄에는 2번 호출되면 제자리로 돌아온다는 사실을
항상 인지하고 있어야 한다. 매번 reverse를 해주면 그만큼 사용하는 메모리가 많아진다.
그리고 어차피 reverse를 하더라도 주어진 연산은 삭제밖에 없으니, reverse의 토큰 수에 따라서 왼쪽이나 오른쪽 수를 지워주기만 하면 된다.,
import sys
input = sys.stdin.readline
for _ in range(int(input())):
commands = input()
n = int(input())
data = input().rstrip()[1:-1].split(",")
result = 0
reverse_count = 0
if n == 0:
data = []
for command in commands:
if command == 'R':
reverse_count += 1
elif command == 'D':
if len(data) > 0:
if reverse_count % 2 == 0:
data.pop(0)
else:
data.pop()
else:
result = -1
if reverse_count % 2 == 1:
data.reverse()
if result == -1:
print("error")
else:
print("[" + ",".join(data) +"]")
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.14502 연구소 (0) | 2021.12.22 |
---|---|
[파이썬] 백준 알고리즘 No.18352 특정 거리의 도시 찾기 (0) | 2021.12.18 |
[파이썬] 백준 알고리즘 No.17298 오큰수 (0) | 2021.12.16 |
[파이썬] 백준 알고리즘 No.15652 N과 M (4) (0) | 2021.12.15 |
[파이썬] 백준 알고리즘 No.15651 N과 M (3) (0) | 2021.12.15 |