-
반환되는 동전이 최소한이 되는 자판기를 구현 -> 가능한 한 적은 수의 동전 반환 = 큰 단위의 동전 최대한 많이 만들기
-
자판기가 보유한 금액으로 동전을 무작위 생성
- 자판기 보유 금액 입력받기
- 10 으로 나눠떨어져야 함
- 입력받은 자판기 보유 금액으로 동전 생성 (500원, 100원, 50원, 10원)
- 투입 금액으로는 동전을 생성하지 않는다.
- 자판기 보유 금액 입력받기
-
상품명, 가격, 수량을 입력하여 상품을 추가할 수 있다.
- 상품 가격은 100원부터 시작하며, 10원으로 나누어떨어져야 한다.
- 상품이 여러개인 경우, 상품명이 중복되지 않아야 한다.
- 입력 형식 예: "[콜라,1500,20];[사이다,1000,10]"
-
사용자가 투입한 금액으로 상품을 구매할 수 있다.
- 투입 금액을 입력받고 투입 금액을 출력하고 구매할 상품명을 입력받는다.
-
잔돈 반환 조건
- 남은 금액이 상품의 최저 가격보다 적은 경우 바로 잔돈을 돌려준다.
- 모든 상품이 소진된 경우 바로 잔돈을 돌려준다.
-
잔돈 반환
- 잔돈을 반환할 수 없는 경우 잔돈으로 반환할 수 있는 금액만 반환. 반환되지 않은 금액은 자판기에 남는다.
- 잔돈을 돌려줄 때 현재 보유한 최소 개수의 동전으로 잔돈을 돌려준다.
- 지폐를 잔돈으로 반환하는 경우는 없다.
-
사용자가 잘못된 값을 입력할 경우 IllegalArgumentException 발생, "[ERROR]"로 시작하는 에러 메시지를 출력 후, 해당 부분부터 다시 입력을 받는다.
-
코드 컨벤션 적용
- 메서드 10라인 이하
- else X
- indent 2까지
- 하드코딩 X (상수 처리)
- 전체 흐름 입출력 예시
자판기가 보유하고 있는 금액을 입력해 주세요.
450
자판기가 보유한 동전
500원 - 0개
100원 - 4개
50원 - 1개
10원 - 0개
상품명과 가격, 수량을 입력해 주세요.
[콜라,1500,20];[사이다,1000,10]
투입 금액을 입력해 주세요.
3000
투입 금액: 3000원
구매할 상품명을 입력해 주세요.
콜라
투입 금액: 1500원
구매할 상품명을 입력해 주세요.
사이다
투입 금액: 500원
잔돈
100원 - 4개
50원 - 1개