본문 바로가기
코딩테스트/파이썬

[python] Stack-코딩테스트

by onggury 2023. 6. 16.

문제

크기가 K인 Stack 자료구조를 구현하려고 한다.

  • 주어지는 명령은 push 와 pop 두 가지이다.
  • push 는 Stack 에 크기가 1인 정소를 추가하는 명령이다.
  • 만약에 이미 Stack 이 가득 차 있을 때 push 명령이 주어진다면, 대신 "Overflow" 를 출력한다.
  • pop 은 Stack 에서 가장 최근에 추가된 정수를 제거하고, 제거된 정수를 출력하는 명령이다.
  • 만약에 이미 Stack 이 비어있을 때 pop 명령이 주어진다면, 대신 "Underflow" 를 출력한다.

N개의 명령이 주어질 때, 위의 지시 사항에 따라 값을 출력하시오.

 

 

입력

첫째 줄에 주어지는 명령의 개수 N과 Stack 의 크기 K가 공백을 두고 주어진다.

다음 N개의 줄에는 명령이 주어진다.

  • push <value> : Stack 에 값이 <value> 인 정수 데이터를 추가한다.
  • pop : Stack 에서 가장 최근에 추가된 정수를 제거한다.

명령은 항상 위 두 가지 형식 중 하나로 주어진다.

  • 1 ≤ N ≤ 100,000
  • 1 ≤ K ≤ 1,000
  • <value> 는 1 이상 100 이하의 점수이다.

 

 

import sys

input = sys.stdin.readline

n, k = map(int, input().split())
stack = []

for _ in range(n):
	command = list(input().split())
	if command[0] == "push":
		if len(stack) >= k:
			print("Overflow")
		else:	
			stack.append(command[1])
	elif command[0] == "pop":
		if len(stack) == 0:
			print("Underflow")
		else:
			print(stack.pop())

심술이 났는지 pop() 을 쓰지 않고 해결하고 싶어서 괜히 오래걸린 문제였다.

 

 

 

※출처

https://multicampus-kdt.goorm.io/lecture/38996/멀티잇-코딩테스트-러닝클래스-python-6월반