알고리즘/백준

[BaekJoon] 백준 5585번 _ 거스름돈 for JAVA _ 그리디 알고리즘

정석이 2022. 1. 18. 16:03

 

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

 

5585번: 거스름돈

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

www.acmicpc.net

 

 

 

문제

 

 


 

아ㅠ 이거 여러번 풀어본건데 코드 너무 구데기로 짰다...

 

 

코드

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

public class Baek5585{
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int pay = Integer.parseInt(br.readLine());
		
		int count = 0, change = 0;
		
		count += (1000 - pay) / 500;
		change = (1000 - pay) % 500;
		count += change / 100;
		change = change % 100;
		count += change / 50;
		change = change % 50;
		count += change / 10;
		change = change % 10;
		count += change / 5;
		change = change % 5;
		count += change;
		
		System.out.println(count);
	}

}

 

 

네 노가다 했습니다.

 

 

아주 마음에 안드는데... 뭔가 맞긴 맞으니까 뇌가 안돌아가서 다른사람껄로 얼른 정화해야겠음

 

 

 

 

내 방법 성능

 

 

 

 


 

다른 사람 풀이

 

 

맞아 동빈씨가 그리디 알고리즘 알려주면서 알려줬었다.

 

 

 

 

 

 

이르케.....하면 아주 깔끔하지.....!

 

 

 

 

 

 

코드

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

public class Baek5585{
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int pay = Integer.parseInt(br.readLine());
		
		int[] coin = {500, 100, 50, 10, 5, 1};
		int count = 0;
		
		pay = 1000 - pay;
		
		for(int i = 0; i < 6; i++) {
			count += pay / coin[i];
			pay %= coin[i];
		}
		
		System.out.println(count);
	}

}

 

 

 

 

 

성능 위에꺼

 

 

 

 

 

오 근데 위에 노가다가 성능은 아주아주 조금 낫다 ㅎㅎ