코딩테스트/백준 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