꾸준히 합시다
백준 파이썬 5397번: 키로거 본문
https://www.acmicpc.net/problem/5397
문제 유형: 스택, 구현
# Solution 1
n = int(input())
for _ in range(n):
left = []
right = []
cmd = input()
for i in cmd:
if i == '<':
if left:
right.append(left.pop())
elif i == '>':
if right:
left.append(right.pop())
elif i == '-':
if left:
left.pop()
else:
left.append(i)
left.extend(reversed(right))
print(''.join(left))
백준 1406번과 유사한 문제다. 이 문제도 커서를 기준으로 왼쪽, 오른쪽을 나눠서 스택을 구현해야 한다.
- 입력 값이 '<'인 경우 왼쪽 리스트의 마지막 아이템을 오른쪽으로 보내준다. 단 왼쪽 리스트가 빈 리스트가 아니어야 실행 가능하다. 왼쪽 리스트가 비어있다면 아무 일도 일어나지 않는다.
- 입력 값이 '>' 경우 반대로 오른쪽 리스트 제일 마지막 아이템을 왼쪽 리스트로 보내준다. 마찬가지로 오른쪽 리스트가 비어있다면 아무 일도 일어나지 않는다.
- 이렇게 실행했을 시 오른쪽 리스트의 순서가 반대로 정렬되기 때문에 마지막 결과를 출력할 때는 reversed()를 이용해 오른쪽 리스트를 뒤집어주고 왼쪽 리스트와 합친다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 1546번: 평균 (0) | 2021.03.08 |
---|---|
백준 파이썬 1543번: 문서 검색 (0) | 2021.03.08 |
백준 파이썬 1406번: 에디터 (0) | 2021.03.08 |
백준 파이썬 1065번: 한수 (0) | 2021.03.07 |
백준 파이썬 5635번: 생일 (0) | 2021.03.06 |
Comments