Notice
Recent Posts
Recent Comments
Link
코테 탈출일지
[백준] 10828번: 스택 - 파이썬/python 본문
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
접근 방식
- 효율적인 접근 방식
- 데크로 스택 구현하
코드 풀이
from collections import deque
import sys
n = int(input()) # 명령의 갯수
stack = deque()
for _ in range(n):
order = list(sys.stdin.readline().split()) # ex order = ['push', '2'], ['empty']
if order[0] == 'push':
stack.append(order[1])
elif order[0] == 'pop':
if len(stack) != 0:
n = stack.pop()
print(n)
else: print(-1)
elif order[0] == 'size':
print(len(stack))
elif order[0] == 'empty':
if len(stack) == 0: print(1)
else: print(0)
elif order[0] == 'top':
if len(stack) != 0:
print(stack[-1])
else: print(-1)
10866번 문제와 유사한 구조로 풀 수 있는 문제입니다. 먼저 스택, 큐, 덱의 개념을 명확히 아는 것이 중요합니다. 다만, 스택과 큐의 경우 파이썬에서 직접 지원되지 않는 자료형이므로 리스트를 활용할 수 있습니다. 하지만 양방향 큐인 덱을 활용하여 코드를 작성하는 것이 보다 편합니다.
'구현' 카테고리의 다른 글
[백준] 1475번: 방 번호 - 파이썬/python (0) | 2023.07.08 |
---|---|
[백준] 1158번: 요세푸스 문제 - 파이썬/python (0) | 2023.07.04 |
[백준] 10866번: 덱 - 파이썬/python (0) | 2023.06.30 |
[백준] 2941번: 크로아티아 알파벳 - 파이썬/python (0) | 2023.06.30 |
[백준] 4673번: 셀프 넘버 - 파이썬/python (0) | 2023.06.27 |