[백준] 5397. 키로거

원숭2·2022년 2월 16일
0

백준

목록 보기
43/54

문제

풀이

두개의 stack을 활용함.

  • 그냥 문자열일 경우 stack1에 넣어 줌.
  • 좌측 or 우측 화살표가 입력될 시, 각 stack이 비어있지 않은 경우에만 좌측의 경우 stack1 -> stack2, 우측의 경우 stack2 -> stack1 으로 옮겨줌.
  • stack2의 경우 반대로 정렬되기 때문에 뒤집어줘서 return함.

코드

import sys

def solution() :
    t = int(sys.stdin.readline())
    
    for _ in range(t) :
        l = sys.stdin.readline().rstrip()
        stack1 = []
        stack2 = []
    
        for s in l :
            if s == '<' :
                if stack1 :
                    stack2.append(stack1.pop())
            elif s == '>' :
                if stack2 :
                    stack1.append(stack2.pop())
            elif s == '-' :
                if stack1 :
                    stack1.pop()
            else :
                stack1.append(s)
        print(''.join(stack1) + ''.join(stack2)[::-1])
solution()

0개의 댓글