알고리즘/문제풀이
[Python] 백준 5397 키로거
정찡이
2021. 9. 28. 13:38
728x90
1. 문제 링크
https://www.acmicpc.net/problem/5397
5397번: 키로거
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입
www.acmicpc.net
2. 문제 요약
비밀번호를 출력한다.
3. 아이디어 정리
- 그대로 구현해준다.
- < 인 경우 범위 확인하고 now - 1
- 인 경우 범위 확인하고 now + 1
- -인 경우 now 앞에 있는 수를 제거한다.
- 그 외는 비밀번호이기 때문에 현재 위치에 넣어준다.
4. 문제 풀이
4-1. 내 풀이
import sys
from collections import deque
for _ in range(int(sys.stdin.readline())):
l = sys.stdin.readline().rstrip()
result = deque()
now = 0
for c in l:
if c == '<':
if now > 0:
now -= 1
elif c == '>':
if len(result) > now:
now += 1
elif c == '-':
if result and now >= 1:
del result[now - 1]
now -= 1
else:
result.insert(now, c)
now += 1
print(''.join(result))
5. 결론
- 덱을 이용한다.