반응형
5397번: 키로거
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입
www.acmicpc.net
코드
from collections import deque
import sys
n = int(input())
for i in range(n):
left = deque([])
right = deque([])
index = 0
inp = list(sys.stdin.readline().rstrip())
for j in inp:
if j == '<':
if len(left)>0:
right.appendleft(left.pop())
elif j == '>':
if len(right)>0:
left.append(right.popleft())
elif j == '-':
if len(left)>0:
left.pop()
else:
left.append(j)
answer = "".join(left)+"".join(right)
print(answer)
설명
커서를 기준으로 왼쪽과 오른쪽 deque를 만들었다.
만약 '<'가 나오면 커서가 왼쪽으로 이동해야 하기 때문에 left에 값이 들어있으면 가장 끝에 있는 값을 right.appendleft()를 이용하여 right의 가장 앞쪽에 push 해준다.
만약 '>'가 나오면 위와 반대로 right에 값이 들어있으면 가장 앞에 있는 값을 꺼내 left의 가장 끝에 push 해준다.
'-'가 나왔을 경우는 left에 값이 있는지 확인하여 만약에 있으면 pop을 해준다.
그 외의 경우는 모두 비밀번호의 일부이므로 left에 push를 해준다.
마지막에는 join함수를 이용하여 left와 right의 값들을 합쳐서 출력해주었다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 5430번 AC (0) | 2022.02.16 |
---|---|
[백준][Python] 18115번 카드 놓기 (0) | 2022.02.16 |
[백준][Python] 1021번 회전하는 큐 (0) | 2022.02.15 |
[백준][Python] 3986번 좋은 단어 (0) | 2022.02.14 |
[백준][Python] 4949번 균형잡힌 세상 (0) | 2022.02.14 |
댓글