코딩테스트
[구름] 체크 카드 (python)
hammii
2024. 11. 10. 23:41
문제
https://level.goorm.io/exam/160275/%EC%B2%B4%ED%81%AC-%EC%B9%B4%EB%93%9C/quiz/1
구름LEVEL
난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.
level.goorm.io
코드
from collections import deque
N, M = map(int, input().split())
queue = deque()
for _ in range(M):
line = input().split()
t = line[0]
price = int(line[1])
if t == 'deposit':
N += price
while queue and N >= queue[0]:
N -= queue.popleft()
elif t == 'pay':
if N >= price:
N -= price
elif t == 'reservation':
if N >= price:
if queue:
queue.append(price)
else:
N -= price
else:
queue.append(price)
print(N)
deposit인 경우에 금액만큼 계좌에 price를 더해주고
pay인 경우에 금액만큼 계좌에서 price를 차감했다.
reservation인 경우에, 계좌의 현재 잔액(N)과 price를 비교하여 더 적은 경우 대기 목록(queue)에 추가하였다.
결제가 가능해지는 즉시 해당 거래의 금액만큼 계좌에서 금액이 차감된 뒤 대기 목록에서 삭제 되어야 하기 때문에
deposit 인 경우에 while 문을 사용하여 결제가 가능한 경우 대기목록(queue)에서 삭제해주었다.