[Silver II] 알파벳 블록 - 27497
분류
자료 구조, 덱, 스택, 문자열
문제 설명
스타는 알파벳 블록을 일렬로 조립하여 문자열을 만드는 게임을 만들었다. 각 블록에는 문자 하나가 적혀 있으며 게임에는 각각 다음 기능을 수행하는 세 개의 버튼이 있다.
- 문자열 맨 뒤에 블록 추가
- 문자열 맨 앞에 블록 추가
- 문자열을 구성하는 블록 중 가장 나중에 추가된 블록 제거
게임은 처음에 빈 문자열로 시작하며 빈 문자열일 때 문자열을 구성하는 블록 중 가장 나중에 추가된 블록을 제거하는 버튼을 누를 경우 아무런 동작도 하지 않는다. 버튼을 누른 횟수와 누른 버튼이 순서대로 주어질 때 완성된 문자열을 구하여라.
입력
첫째 줄에 버튼을 누른 횟수 N이 주어진다. (1≤N≤1000000)(1≤1000000)
둘째 줄부터 N개의 줄에는 버튼을 누른 순서대로 누른 버튼에 대한 정보를 주며 아래와 같은 형식으로 주어진다.
- 1 c : 문자열 맨 뒤에 c가 적힌 블록 추가
- 2 c : 문자열 맨 앞에 c가 적힌 블록 추가
- 3 : 문자열을 구성하는 블록 중 가장 나중에 추가된 블록 제거
c는 알파벳 대문자 또는 소문자로 주어진다.
출력
완성된 문자열을 출력한다. 완성된 문자열이 빈 문자열인 경우 0을 출력한다.
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
buttons = deque()
for _ in range(N):
info = list(input().split())
if buttons and info[0] == "3":
buttons.pop()
else:
buttons.append(info)
words = deque()
for button in buttons:
if button[0] == "1":
words.append(button[1])
elif button[0] == "2":
words.appendleft(button[1])
result = 0
if words:
result = "".join(words)
print(result)
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준 / Python 파이썬] 25516번 - 거리가 k이하인 트리 노드에서 사과 수확하기 (0) | 2023.09.02 |
---|---|
[백준 / Python 파이썬] 14496번 - 그대, 그머가 되어 (0) | 2023.09.02 |
[백준 / Python 파이썬] 23304번 - 아카라카 (0) | 2023.08.22 |
[백준 / Python 파이썬] 16923번 - 다음 다양한 단어 (0) | 2023.08.22 |
[백준 / Python 파이썬] 1821번 - 수들의 합 6 (0) | 2023.08.13 |