본문 바로가기
  • 안녕하세요,,, 안녕히가세요,,,,
프로그램/코딩테스트

백준 5397 키로거

by 차보루타 2022. 6. 13.

 

import sys

input = sys.stdin.readline

for _ in range(int(input())) :
    
    left_stk = []
    right_stk = [] 
    
    key_press = input().strip()
    
    for key in key_press :
        if key == '<' :
            if left_stk :
                right_stk.append(left_stk.pop())
        elif key == '>' :
            if right_stk :
                left_stk.append(right_stk.pop())
        elif key == '-' :
            if left_stk :
                left_stk.pop()
        else :
            left_stk.append(key)
            
            
    left_stk.extend(reversed(right_stk))
    
    print(''.join(left_stk))

 

2개의 스택을 이용해서 해결했다.

 

<키가 나오면 오른쪽에 있는 문자를 pop해서 왼쪽에 있는 문자에 push 했고, >키가 나오면 반대로 해결했다.

 

-키가 나오면 왼쪽에 있는 문자를 pop해서 버렸고, 이 외의 문자는 왼쪽에 push해주었다.

 

그리고 오른쪽에 있는 문자는 반대로 되어 있으므로 왼쪽에 추가할때는 reverse 해주고 출력해주었다.

'프로그램 > 코딩테스트' 카테고리의 다른 글

백준 2075 N번째 큰 수  (0) 2022.06.13
백준 1935 후위 표기식2  (0) 2022.06.13
백준 7785 회사에 있는 사람  (0) 2022.06.13
백준 1302 베스트셀러  (0) 2022.06.13
백준 11286 절댓값 힙  (0) 2022.06.13

댓글