본문 바로가기
코딩테스트/Python

[python 구름] 체크 카드

by nahkim 2023. 5. 15.

📜 접근 방법

  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로도 문제를 풀자!!

'코딩테스트 > 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