jyamethyst21 님의 블로그
백준 28278번- '스택 2' (PYTHON 풀이) 본문
문제:

이번에는 코드로 스택을 구현하는 문제이다.
다들 수업시간에 스택을 한번쯤 들어보셨을 것 같은데 쉽게 설명해보겠다.
스택이란 작은 박스가 있을 때, 들어가고 나가는 구멍이 하나만 있어서 후입선출형태로 값이 변경되는 자료구조를 의미한다.

만약에 위와 같은 원통이 있는데 이미지처럼 스마일, 하트, 번개 순으로 들어갔다고 쳐보자.
줄서서 기다리는 중 하트가 화장실이 급해서 나가야하는 상황이라면 번개한테 '잠시 자리 좀 비켜주시겠어요?' 라고 해야할 것이다. (입구가 하나니까)
그래서 결과적으로 하트가 나가고싶으면 번개가 먼저 나간 뒤에 그 다음 하트가 나갈 수 있다. 그래서 후입선출형태라고 말한다.
이와 같은 스택 구조를 파이썬으로 구현하며 되는 문제인데, 스택의 기능을 명령 형태로 설명해주었으니 그걸 그대로 코드로 작성하면 된다. 아마 스택의 개념을 모르더라도 명령대로만 작성한다면 쉽게 풀 수 있다.
풀이:
import sys
N = int(sys.stdin.readline())
stack = []
for i in range(N):
process = sys.stdin.readline().split()
if process[0] == '1':
stack.append(process[1])
elif process[0] == '2':
if not stack:
print(-1)
else:
value = stack.pop()
print(value)
elif process[0] == '3':
print(len(stack))
elif process[0] == '4':
if not stack:
print(1)
else:
print(0)
elif process[0] == '5':
if not stack:
print(-1)
else:
print(stack[-1])
간만에 긴 코드이다. 원래는 input()으로 입력받았는데 시간초과가 떠서 sys import해서 진행했다. 그랬더니 시간 초과도 뜨지 않고 잘 풀렸다. 정말 말 그대로 명령을 그대로 코드로 쓴거라 설명해줄 건 없고 작성하면서 참고하면 좋을 부분만 따로 설명하겠다.
1. 파이썬에 pop()이라는 함수가 있어서 명령 2와 같이 스택 구조에서 맨 끝의 자리의 숫자를 제거한 뒤 그 값을 출력하기에 용이하다.
2. 입력받는 숫자가 문자 형태일 경우 조건문과 같이 숫자를 '' 에 넣어서 문자처럼 취급해주어야 한다.
3. 스택이 비어있다는 표현을 if == False 라고 할 경우 원하는 값이 출력되지 않는다. (if not stack: 형태로 작성해야함)
이상으로 풀이를 마치겠다!
'CODING 💻' 카테고리의 다른 글
| 백준 9012번- '괄호' (PYTHON 풀이) (0) | 2025.10.22 |
|---|---|
| 백준 10773번- '제로' (PYTHON 풀이) (0) | 2025.10.21 |
| 백준 1436번- '영화감독 숌' (PYTHON 풀이) (0) | 2025.10.19 |
| 백준 11478번- '서로 다른 부분 문자열의 개수' (PYTHON 풀이) (0) | 2025.10.18 |
| 백준 1269번- '대칭 차집합' (PYTHON 풀이) (0) | 2025.10.17 |
