문제 풀이/백준

[백준] 14916번. 거스름돈 (JAVA)

27200 2024. 1. 15. 19:43

https://www.acmicpc.net/problem/14916


문제


풀이

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;
        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;
            }
        }
    }
}

 

 기본적인 아이디어는 5의 나머지를 제대로 활용하는 것이다. 처음엔 홀수와 짝수로 접근해볼까 했지만 5로 나누어떨어지지 않는다면 2만큼 계속 빼줘야 한다는 것을 중요 아이디어로 사용하여 접근법을 바꿨다. 무한루프를 통해 지속적으로 5로 나누어떨어지는지 검사를 하고, 실패 시 -2만큼을 하여 계속 접근을 시도한다. 이 후 최종적으로 음수가 된다면 불가능 한 것으로 -1을 출력하도록 한다.