📜 접근 방법
- 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로도 문제를 풀자!!
'코딩테스트 > Python' 카테고리의 다른 글
[python 구름] 거스름돈 (0) | 2023.05.17 |
---|---|
[python 구름] 1차원 뿌요뿌요 (0) | 2023.05.16 |
[python 구름] Stack (0) | 2023.05.15 |
[python 구름] 개미와 진딧물 (0) | 2023.05.14 |
[python 구름] 제곱 암호 (0) | 2023.05.13 |