article thumbnail image
Published 2022. 11. 6. 18:33

풀이

import sys; import collections

S = list(sys.stdin.readline().strip())
Q = collections.deque()

N = int(sys.stdin.readline().strip())

for _ in range(N):
    info = list(sys.stdin.readline().strip().split())
    if info[0] == 'L' and S:
        Q.append(S.pop())
    elif info[0] == 'D' and Q:
        S.append(Q.pop())
    elif info[0] == 'B' and S:
        S.pop()
    elif info[0] == "P":
        S.append(info[1])

Q.reverse()
S.extend(Q)
print(''.join(S))

 


후기

  • deque를 사용한 건 처음에 커서를 오른쪽으로 옮기면 Q의 맨 앞의 요소를 추가시켜야 한다고 생각해서이다..
  • 근데 아니었음.. 그냥 무시해주세요!
  • 알고리즘 스터디의 연결리스트 파트의 문제를 품
  • 근데 사실 연결리스트 강의를 안듣고 풀어보았다
  • 책으로 연결리스트를 대충 보니 대략적으로 구조가 어떻게 이루어진지 알겠다
  • 배열을 사용할때 하나의 배열로 놓지 않고 여러개의 배열을 연결시켜 각 각 다른 메모리를 차지하는 놈들을 연결시키는것인 것 같다.
  • 이 문제는 insert, pop(특정인덱스)를 사용하지 않고 풀어야 되고, 결국은 두 배열을 연결시켜야 된다.
복사했습니다!