250x250
Notice
Recent Posts
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

일상 코딩

[python] 백준 알고리즘 5397번 키로거, 문자열 풀이 본문

코딩테스트/백준 online Judge

[python] 백준 알고리즘 5397번 키로거, 문자열 풀이

polarcompass 2021. 11. 7. 15:06
728x90

https://www.acmicpc.net/problem/5397

 

5397번: 키로거

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입

www.acmicpc.net

T = int(input())

for _ in range(T):
    L = ""
    R = ""
    S = input()
    for s in S:
        if '<' == s:
            if L:
                R += L[-1]
                L = L[:-1]
        elif '>' == s:
            if R:
                L += R[-1]
                R = R[:-1]
        elif '-' == s:
            if L:
                L = L[:-1]
        else:
            L += s
    L += R[::-1]
    print(L)

입력예시

2
<<BP<A>>Cd-
ThIsIsS3Cr3t

출력예시

BAPC
ThIsIsS3Cr3t
Left Stack Cursor Right Stack
Stack: | :Stack

Stack 2개를 양쪽으로 배치하고, 중앙엔 커서를 배치한 방식으로 풀어준다.

커서가 '<' 왼쪽으로 이동시 왼쪽에 있던 문자를 오른쪽 stack으로 옮겨 준다.

반대로 '>' 오른쪽으로 이동시 오른쪽에 있던 문자를 왼쪽 stack으로 옮겨주는 방법으로 풀어준다.

보통 List를 사용하지만

문자열을 사용해서 풀어보았다.

728x90