티스토리 뷰

알고리즘/백준

[BAEKJOON] 5585 거스름돈

응애~ 개발자 2022. 11. 23. 00:34
728x90
반응형

문제 요약

  • 알고리즘 분류: 그리디
  • 난이도: Bronze2
  • 문제내용:
    • 잔돈은 500, 100, 50, 5, 1 있다.
    • 내가 가진돈은 1000엔 지폐 한 장을 내면 거스름돈 받아야 최소 개수를 구해라.
  • 사이트: https://www.acmicpc.net/problem/5585
 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

문제풀이

 이번 문제는 그리디 알고리즘 중 그리디 알고리즘이다. 그리디 알고리즘의 관련 내용은 아래 사이트에 확인 해보면 되고 예제중에 거스름돈이 있으니 그것 확인 해보면 문제를 풀수 있다.

https://jih3508.tistory.com/70

 

[알고리즘 이론] 그리디(Greedy)

이론 그리디 알고리즘은 탐욕 알고리즘이라고 부르기도 한다. 즉, 매 순간 선택할때 가장 좋은것을 선택하는 알고리즘이다. 이 알고리즘은 이론상 설명 단순하고 다른 알고리즘에서 기초적으로

jih3508.tistory.com

  1.  1000을 뺀 나머지 돈을 구한다.
  2. 500, 100, 50, 10, 5, 1 순으로 잔돈을 나누어서 개수에 추가한다.
  3. 잔돈에서 지금 나눈수의 나머지를 잔돈에 저장한다.

Code

Python

change = 1000 - int(input())
count = 0
moneys = [500, 100, 50, 10, 5, 1]
for money in moneys:
    count += change // money
    change %= money

print(count)

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int change = 1000 - Integer.parseInt(br.readLine());
		int[] moneys = {500, 100, 50, 10, 5, 1};
		int count = 0;
		for(int money : moneys) {
			count += change / money;
			change %= money;
		}
		System.out.println(count);
	}
	
}
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[BAEKJOON] 11444 피보나치 수 6  (0) 2022.11.24
[BAEKJOON] 10830 행렬 제곱  (0) 2022.11.24
[BAEKJOON] 11401 이항 계수 3  (0) 2022.11.22
[BAEKJOON] 2740 행렬 곱셈  (0) 2022.11.21
[BAEKJOON] 16099 Larger Sport Facility  (0) 2022.11.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함