알고리즘/백준
[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);
}
}
오 근데 위에 노가다가 성능은 아주아주 조금 낫다 ㅎㅎ