타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오.
입력은 한줄로 이루어져있고, 타로가 지불할 돈(1 이상 1000미만의 정수) 1개가 쓰여져있다.
입력 | 출력 |
---|---|
380 | 4 |
1 | 15 |
타로는 항상 1000엔을 내고 거스름돈을 받는다. 따라서 1000엔에서 구매금액을 뺀 가격이 타로가 받을 거스름돈이 된다. 잔돈으로는 1000엔, 500엔, 100엔, 50엔, 10엔, 5엔, 1엔으로 받게 되고 항상 개수가 가장 적게 받는다. 액수가 큰 수부터 차례로 나누어 떨어지지 않을때까지 받으면 가장 적게 받을 수 있을 것이다.
먼저 거스름돈으로 받을 수 있는 금액들의 배열을 생성했다. 그리고 거스름돈으로 받을 i
변수를 생성해주었다. 그리고 개수를 셀 count
변수, 거스름돈 금액의 인덱스를 지정할 index
변수를 지정해 주었다.
while반목문을 통해 각 변수들을 거스름돈이 0원이 될때까지 거스름돈 배열의 값들만큼 나눠주고 count
변수를 계산해준다.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int[] arr = {500, 100, 50, 10, 5, 1};
int i = 1000 - a;
int count = 0;
int index = 0;
while (i > 0) {
count += i / arr[index];
i = i % arr[index];
index++;
}
System.out.println(count);
}
}