Skip to content

Latest commit

 

History

History
76 lines (51 loc) · 2.39 KB

File metadata and controls

76 lines (51 loc) · 2.39 KB

구현 기능 목록

  • 반환되는 동전이 최소한이 되는 자판기를 구현 -> 가능한 한 적은 수의 동전 반환 = 큰 단위의 동전 최대한 많이 만들기

  • 자판기가 보유한 금액으로 동전을 무작위 생성

    • 자판기 보유 금액 입력받기
      • 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개