참고: https://www.acmicpc.net/problem/1436
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
스택을 구현하는 알고리즘을 작성한다.
push가 아닌 나머지 명령어에 대해서 출력을 하는데,
1) pop는 가장 위 정수를 빼고 정수 출력, 없으면 -1 출력
2) size는 스택 개수 출력
3) empty는 스택 비면 1, 아니면 0 출력
4) top는 가장 위 정수 출력, 없으면 -1 출력
다음과 같은 방식으로 출력을 진행한다.
import sys
input = sys.stdin.readline
n=int(input())
data=[]
for _ in range(n):
a=input()
if 'push' in a:
a = list(a.split())
data.append(a[1])
elif 'pop' in a:
if len(data) > 0:
print(data[-1])
data.pop(-1)
else: print(-1)
elif 'size' in a:
print(len(data))
elif 'empty' in a:
if len(data) > 0: print(0)
else: print(1)
elif 'top' in a:
if len(data) > 0: print(data[-1])
else: print(-1)
명령어 횟수 n번을 반복하면서 input에 따라
push는 리스트에 append를,
pop는 리스트에서 pop를 진행하고
나머지는 조건에 맞게 출력을 진행하였다.
(참고로 시간 초과에 걸릴 수 있는 내장함수 input() 대신에
sys 라이브러리를 활용해서 입력을 받아야한다.)
화이팅 💪
'알고리즘(algo) > 백준' 카테고리의 다른 글
[백준] 9012번 - 괄호 (0) | 2023.02.04 |
---|---|
[백준] 9093번 - 단어 뒤집기 (0) | 2023.02.04 |
[백준] 11729번 - 하노이 탑 이동 순서 (0) | 2023.02.03 |
[백준] 1018번 - 체스판 다시 칠하기 (0) | 2023.02.02 |
[백준] 1436번 - 영화감독 숌 (0) | 2023.02.02 |