알고리즘/백준

[파이썬, 자바] BOJ_14916(거스름돈)

딱따구르리 2021. 1. 29. 08:34
728x90
반응형

문제

 

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

 

14916번: 거스름돈

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

www.acmicpc.net


 

해설

 

이 문제는 백준을 많이 풀어본 사람이라면 여러번 봤을 문제이다.

그만큼 이와 비슷한 문제가 많다.

 

거슬러 줄 동전의 개수가 최소가 되기 위해서는 더 큰 값의 동전 개수가 최대로 사용되어야 할 것이다.

 

coin이 5원으로 나눠떨어질 때 까지 2원씩 빼주면 된다.

물론 동전 개수는 하나씩 더해주고.

 

2원씩 빼다보면 coin이 음수가 되는 경우가 생기는데,

그 때가 거슬러 줄 수 없는 경우이므로 "-1"을 출력해주면 된다.


코드

 

-파이썬

#백준 14916(거스름돈)

coin = int(input())  #거스름돈
res = 0  #동전 개수

while coin >= 0:
    if coin % 5 == 0:
        print(res + (coin // 5))
        break
    coin -= 2
    res += 1
else:  #거슬러줄 수 없으면
    print(-1)

 

-자바

//백준 14916(거스름돈)
import java.util.*;
import java.io.*;

public class Boj_14916 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int coin = Integer.parseInt(br.readLine());  //거스름돈
		int res = 0;  //동전 개수
				
		while(coin >= 0) {
			if (coin % 5 == 0) {
				System.out.println(res + (coin / 5));
				break;
			}
			coin -= 2;
			res += 1;
		}
		if(coin < 0) {
			System.out.println(-1);
		}
	}

}
728x90
반응형