[백준/파이썬] 5397번 키로거 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 5397번 키로거
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
키 입력 문자열(<, >, -, 일반 문자`)을 처리해
최종 비밀번호를 복원하는 문제입니다.
코드
import sys;read=sys.stdin.readline
class Node:
def __init__(self,n):self.n=n
for T in range(int(read())):
s=read()[:-1]
for i in range(len(s)):
if s[i] not in ['<','>','-']:break
head=Node('')
cur=Node(s[i])
head.r,cur.l=cur,head
if i+1==len(s)-1:
print(s[i])
continue
for c in s[i+1:]:
if c=='<':
try:
if cur.l is not None:cur=cur.l
except:pass
elif c=='>':
try:
if cur.r is not None:cur=cur.r
except:pass
elif c=='-':
t=cur
try:
try:cur.l.r=t.r
except:
try:
cur.l.r=None
except:pass
cur.r.l=t.l
except:pass
try:cur=t.l
except:pass
else:
t=Node(c)
try:
t.r=cur.r
cur.r.l=t
except:pass
cur.r=t
t.l=cur
cur=t
r=[]
while True:
try:
r.append(head.n)
head=head.r
except:break
print(''.join(r))
설명
커서 이동과 삭제를 양방향 연결 구조로 처리해 입력 순서대로 최종 문자열을 복원합니다.
댓글남기기