백준 5397 키로거 / python

이유참치·2026년 3월 7일

백준

목록 보기
234/248

문제 : 5397

풀이 point

1406문제와 유사하다.
스택 2개를 두고 (나는 스택 1개와 큐 1개를 두었다) 명령어에 대한 처리를 해주면 된다.

풀이 방법

'<'가 들어오면 커서가 왼쪽으로 이동하니 왼쪽 스택의 마지막 값을 오른쪽 스택에 넣는다.
'>'가 들오오면 커서가 오른쪽으로 이동하니 오른쪽 스택의 맨 앞 값을 왼쪽 스택에 넣는다.
'-'가 들어오면 커서 기준 왼쪽 글자가 삭제되니 왼쪽 스택의 마지막 값을 삭제한다.
그외의 값은 왼쪽 스택에 추가한다.

(삭제 연산은 모두 스택이 비어있는지 확인 후 해야한다)

풀이 코드

from collections import deque

T = int(input())

for _ in range(T):
  L = deque()
  R = deque()

  keyloger = input()

  for ch in keyloger:
    if ch == '<' and L:
      R.appendleft(L.pop())
    elif ch == '>' and R:
      L.append(R.popleft())
    elif ch == '-' and L:
      L.pop()
    elif ch != '<' and ch!= '>' and ch != '-':
      L.append(ch)

  for ch in L:
    print(ch, end='')
  for ch in R:
    print(ch, end='')
  print()
profile
임아리 - 대학생

0개의 댓글