본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 5397 키로거

커서 움직이는 것에 대한 조작 문제이다.

쉬워보여서 덤볐다가 못 풀었다. 진짜 쓰렸는데, 다른 분들 풀이 보니까 접근법이 어느정도 유형화되어 있는 것 같고, 도저히 혼자서는 못 풀었을 것 같은 느낌이라 잘 후퇴했다 싶었다. 비슷한 문제도 있는 것 같으니 다음에 비슷한 방식으로 출제되었을 때 풀어내기만 하면 된다.

 

https://tturbo0824.tistory.com/23

 

백준 파이썬 5397번: 키로거

https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1

tturbo0824.tistory.com

이 분이 친절하게 유사 유형까지 첨부해주셨다.

 

import sys
input = sys.stdin.readline


t = int(input())
for i in range(t):
  left = []
  right = []
  l = input().strip()

  for x in l:
    if x == ">":
      if right:
        left.append(right.pop())
    elif x == "<":
      if left:
        right.append(left.pop())
    elif x == "-":
      if left:
        left.pop()
    else:
      left.append(x)

  print("".join(left) + "".join(reversed(right)))

: 참고로 위의 문제에서 l을 받을 때 strip을 안 해주면 틀렸다고 결과가 나온다. 

 

: 구조화하면 이해하는 건 어렵지 않지만 아이디어를 떠올리는 게 쉽지 않은 문제인 것 같다.