코딩테스트/Python

[python 구름] 체크 카드

nahkim 2023. 5. 15. 23:18

📜 접근 방법

  1. deposit, pay, reservation을 기준으로 나눈다.
  2. deposit일 경우 balance에 값을 추가한다.
  3. pay일 경우 balance에 빼야할 값이 된다면 빼고 아니면 넘어간다.
  4. reservation일 경우 waiting에 넣는다.
  5. waiting에 값이 있을 경우
    1. balance의 값과 비교하여 맨 앞에 있는 값부터 빼준다.(값이 안되면 반복문을 빠져나온다)

❌ 실패 코드

 

✅ 정답 코드

import sys
input = sys.stdin.readline

balance, cnt = map(int, input().split())
waiting = []

for _ in range(cnt):
	cmd = list(input().split())
	# deposit
	if cmd[0] == 'deposit':
		balance += int(cmd[1])
	# pay
	elif cmd[0] == 'pay':
		if balance >= int(cmd[1]):
			balance -= int(cmd[1])
	# reservation
	else:
		waiting.append(int(cmd[1]))
	# 대기 목록에 들어간 순서대로 결제
	while len(waiting) > 0:
		if balance >= waiting[0]:
			balance -= waiting.pop(0)
		else:
			break
print(balance)

 

💡알게 된점

deque로도 문제를 풀자!!