[백준 / BOJ][Python] 27497 - 알파벳 블록
2023. 2. 20. 18:59ㆍProblem Solving
[백준 / BOJ][Python] 27497 - 알파벳 블록
https://www.acmicpc.net/problem/27497
문제 풀이
자료구조를 다양하게 사용하는 문제. 추가되는 알파벳의 위치가 앞인지 뒤인지를 확인하기 위해 스택을 사용하고, 만들어지는 문자열을 확인하기 위해 덱을 사용한다.
코드
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
s = deque() #문자열을 저장하는 덱
front = [] #블록이 앞에 추가되었는지, 뒤에 추가되었는지를 저장하는 스택
for _ in range(n):
tmp = input().strip()
if tmp[0] == '3': #마지막 블록 삭제
if s: #문자열이 비어있지 않다면
if front.pop(): #마지막으로 추가된 블록이 앞이라면
s.popleft()
else: #뒤라면
s.pop()
else: #비어있다면
continue
elif tmp[0] == '1': #뒤에 추가
s.append(tmp[2])
front.append(False)
else: #앞에 추가
s.appendleft(tmp[2])
front.append(True)
s = list(s)
if s: #문자열이 비어있지 않다면
print(''.join(s))
else: #비어있다면
print(0)
'Problem Solving' 카테고리의 다른 글
[백준 / BOJ][Python] 11779 - 최소비용 구하기 2 (0) | 2023.02.21 |
---|---|
[백준 / BOJ][Python] 27498 - 연애 혁명 (0) | 2023.02.20 |
[백준 / BOJ][Python] 27496 - 발머의 피크 이론 (0) | 2023.02.20 |
[백준 / BOJ][Python] 27495 - 만다라트 만들기 (0) | 2023.02.20 |
[백준 / BOJ][Python] 27494 - 2023년은 검은 토끼의 해 (0) | 2023.02.20 |