본문 바로가기
코딩테스트/BOJ

[JAVA] 백준 14916번 - 거스름돈

by 의정부핵꿀밤 2022. 2. 18.
728x90

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

 

14916번: 거스름돈

첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.

www.acmicpc.net


풀이)

근로 점심시간에 낮잠자고 비몽사몽 백준을 보다가 내가 못푼 문제가 있는거 아니겠어?!

내가?? 하면서 봤더니 거스름돈이네ㅋㅋㅋㅋㅋㅋㅋ

그래서 눈 반만 뜨고 풀었는데 이게 풀리네

나 자신,, 나름 성장하고 있는걸지도,,? 오이오이~~~

 

암튼 풀이는 간단했음

이런 DP문제는 최소 동전이니까 큰 금액 동전으로 줄 수 있는만큼 주고 남은 돈은 작은 동전으로 거슬러 주면 된다

근데 딱 안나눠질수도 있으니까 난 반복문으로 풀었다

이 문제는 2원이랑 5원 뿐이니까 5원으로 거스름돈을 나눌 수 있는 최댓값을 기준으로 반복문을 돌려서 남은 거스름돈을 2원으로 줄 수 있으면 그걸 반환하도록 하고, 만약 아예 못 주면 -1을 반환하도록 해놨다

아래 코드보면 이해갈듯~~

 

 

 

자바 코드)

import java.util.*;

public class boj14916 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;

        int fiveMax = n/5;

        for(int i=fiveMax;i>=0;i--) {
            int num = n - (5*i);
            if(num%2==0) {
                count = i;
                count += num/2;
                break;
            }
        }
        if(count==0) {
            count = -1;
        }
        System.out.println(count);

    }
}

그럼 이제 자소서 마저 쓰러 안녕~

728x90

댓글