코딩테스트/Python
[python 구름] 체크 카드
nahkim
2023. 5. 15. 23:18
📜 접근 방법
- deposit, pay, reservation을 기준으로 나눈다.
- deposit일 경우 balance에 값을 추가한다.
- pay일 경우 balance에 빼야할 값이 된다면 빼고 아니면 넘어간다.
- reservation일 경우 waiting에 넣는다.
- waiting에 값이 있을 경우
- 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로도 문제를 풀자!!