체크 카드
쉬움
유형
프로그래밍
배점
100점
참여자
40
정답률
80%
0
0
문제
체크 카드를 사용할 때 가장 중요한 것은 결제가 항상 가능하도록 계좌 잔고를 항상 채워둬야 한다는 점이다. 구름이는 올바른 소비 습관을 만들기 위해서 지난달 구름이가 카드를 통해서 얼마를 입금하고 결제하였는지 확인하려고 한다.
구름이가 쓰는 체크 카드는 deposit, pay, reservation의 세 가지 기능을 가지고 있다.
- deposit: 주어진 금액만큼 계좌에 돈이 들어온다.
- pay: 주어진 금액만큼 계좌에서 돈이 결제된다. 단, 계좌의 현재 잔액이 주어진 금액보다 적다면 결제되지 않는다.
- reservation: 주어진 금액만큼 계좌에서 돈이 결제된다. 단, 계좌의 현재 잔액이 주어진 금액보다 적거나, 대기 목록에 다른 거래가 있다면 결제되지 않고 대기 목록의 맨 뒤에 추가된다.
- 대기 목록에 있는 거래들은 대기 목록에 들어간 순서대로 결제가 가능해지는 즉시 해당 거래의 금액만큼 계좌에서 금액이 차감된 뒤 대기 목록에서 삭제된다.
처음에 구름이의 계좌에 들어있던 금액과 지난달 구름이의 거래 내역이 주어졌을 때, 주어진 모든 거래가 진행된 뒤에 구름이의 계좌에 남아있는 금액을 출력하시오. 거래가 완료되지 않고 대기 목록에 남아있는 경우도 거래가 진행된 것으로 본다.
입력
첫째 줄에는 처음에 구름이의 계좌에 들어 있던 잔액 과 지난 달 구름이의 거래 횟수 이 공백을 두고 주어진다.
다음 개의 줄에는 구름이의 거래 내역이 시간 순서대로 주어진다. 거래 내역은 유형과 금액이 공백을 두고 주어진다.
- 거래 유형은
deposit
,pay
,reservation
의 세 문자열 중 하나로 주어진다. - 거래 금액은 이상 이하의 정수이다.
- 입력에서 주어지는 모든 수는 정수이다.
출력
주어진 모든 거래가 진행된 뒤에 구름이의 계좌에 남아있는 금액을 출력한다.