알고리즘

백준 No. 14916 거스름돈 JAVA

jaewoo 2023. 2. 21. 16:12

 

 

문제

춘향이는 편의점 카운터에서 일한다.

손님이 2원짜리와 5원짜리로만 거스롬돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야한다. 거스름 돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.

예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름 돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.

 

 

풀이

반복문을 true로 돌린다. 그러면서 해당 값이 5로 나누어 떨어지면 break 하면서 주어진 값을 5로 나누고 나눈 값을 count에 추가한다.

5로 나누어 떨어지지 않으면 주어진 수인 2로 계속 빼면서 count를 1씩 추가해 나간다. 

간단하게 5로나누고 2로 나누면 틀린다. -> 13일 경우 2로 먼저 계속 빼보면 13 -> 11 -> 9 -> 7 -> 5 이런식으로 가면서 2가 4개 5가 한 개 이런식의 주어진 값들이 있어서 이를 처리하기 위해 이처럼 진행한다.

 

 



import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int count = 0;
        int temp = 0;
         while(true){
             if(N%5 == 0){
                    count += N/5;
                 System.out.println(count);
                 break;
             }else{
                 N -= 2;
                 count++;
             }
             if(N < 0){
                 System.out.println(-1);
                 break;
             }
         }
    }
}

'알고리즘' 카테고리의 다른 글

백준 No.1916 최소비용 구하기 - JAVA  (0) 2023.02.23
백준 No.1504 특정한 최단 경로 - JAVA  (0) 2023.02.22
백준 No. 1238 파티 JAVA  (1) 2023.02.21
백준 No.10610 30 - JAVA  (0) 2023.02.20
백준 No.1049 기타줄 - JAVA  (0) 2023.02.17