https://www.acmicpc.net/problem/5397
문제
풀이
처음에는 리스트 한 개와 인덱스를 이용해서 커서의 위치를 구현해주려 했으나 커서를 기준으로 오른쪽과 왼쪽의 문자를 알려주는 두 개의 리스트를 사용하면 훨씬 쉽게 구현할 수 있다는 것을 알게 되었습니다.
[커서 기준 왼쪽 문자들] 커서 [커서 기준 오른쪽 문자들]
이렇게 구현하면 훨씬 쉽게 구현할 수 있다.
정답을 출력할 때 오른쪽 문자들은 마지막에 한번 뒤집어줘야한다. append()를 사용해서 문자의 이동을 해주었기 때문이다.
코드
# 5397번 키로거
t= int(input())
for i in range(t):
left_li = []
right_li = []
pwd = input()
for i in pwd:
if i == "-":
if left_li:
left_li.pop()
elif i == ">":
if right_li:
left_li.append(right_li.pop())
elif i == "<":
if left_li:
right_li.append(left_li.pop())
else:
left_li.append(i)
left_li.extend(reversed(right_li))
print(''.join(left_li))
출력결과
'백준 > 스택 & 큐' 카테고리의 다른 글
[백준][Python] 1715번 카드 정렬하기 - 골드 4 (0) | 2024.03.18 |
---|---|
[백준][Python] 10799번 쇠막대기 - 실버 2 (0) | 2024.03.13 |
[백준][Python] 28278번 스택 2 - 실버 4 (0) | 2024.03.12 |
[백준][Python] 3986번 좋은 단어 - 실버 4 (0) | 2024.03.11 |