🧑💻 기초 자료구조의 구현과 응용
멀티잇 코딩테스트 러닝클래스'Python 5월반
Stack
말 그대로 stack을 구현하면 된다
stack은 Last In First Out 규칙을 가지고 있다
stack에 들어갈 수 있는 용량이 정해졌다
- stack이 이미 꽉 찼을 때에, 값을 넣어야 하면, "Overflow"를 출력
- stack에 아무것도 없는데, 값을 빼야 하는 명령어가 실행되면, "Underflow"를 출력한다
N, K = map(int, input().split())
stack = []
for _ in range(N):
command = list(input().split())
if command[0] == "push":
if len(stack) < K:
stack.append(int(command[1]))
else:
print("Overflow")
else:
if stack:
num = stack.pop()
print(num)
else:
print("Underflow")
체크 카드
모의고사 때 풀었던 문제다
- 모의고사 때에는 문제를 완벽하게 이해를 못 한 체로 풀었던 것 같다
명령어들은 코드로 짜는 것은 기본이다
- 제일 중요했던 점은, 대기 목록에 금액이 있는데, 앞에서 부터 차례대로 그 금액을 결제할 수 있으면, 결제를 해야 한다
- while문으로 처리
from collections import deque
money, M = map(int, input().split())
reserve = deque([])
for _ in range(M):
command, value = input().split()
value = int(value)
if command == "deposit":
money += value
elif command == "pay":
if value <= money:
money -= value
elif command == "reservation":
if len(reserve) == 0 and value <= money:
money -= value
else:
reserve.append(value)
while reserve:
if money >= reserve[0]:
money -= reserve.popleft()
else:
break
print(money)
'알고리즘 > 알고리즘 설명' 카테고리의 다른 글
다이나믹 프로그래밍 (0) | 2023.05.24 |
---|---|
그리디 알고리즘, 원인과 결과 찾기 (0) | 2023.05.23 |
완전 탐색 (0) | 2023.05.11 |
시뮬레이션과 창의적 해결 (2) | 2023.05.09 |
기초 수학과 구현 (0) | 2023.05.05 |