설명
춘향이는 편의점 카운터에서 일한다.
손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.
예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.
입력
첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.
출력
거스름돈 동전의 최소 개수를 출력한다. 만약 거슬러 줄 수 없으면 -1을 출력한다.
예시 입력1
13
예시 출력1
5
예시 입력2
14
예시 출력2
4
풀이
핵심은 잔액이 10 이하일 때 이다.
잔액이 10원을 초과하는 경우, 잔액에서 계속 -5를 하고 answer 값을 1 증가시킨다.
잔액이 10원 이하일 때는, 경우를 나누었다.
10원 : 5원짜리 2개 사용하므로 answer에 2 누적
9원 : 5원짜리 1개, 2원짜리 2개 사용하므로 answer에 3 누적
7원 : 5원짜리 1개, 2원짜리 1개 사용하므로 answer에 2 누적
5원 : 5원짜리 1개 사용하므로 answer에 1 누적
3원 : 만들 수 없으므로 -1 리턴
1원 : 만들 수 없으므로 -1 리턴
위에 작성하지 않은 4원, 6원, 8원 같은 경우에는 (잔액 / 2)를 한 값을 answer에 누적하면 된다.
10원은 5원짜리 2개로 만들 수 있고, 2원짜리 5개로도 만들 수 있지만 동전의 개수를 최소화 해야하므로 5원짜리 2개를 사용하는 방향으로 작성해야 한다.
코드
package baekjoon._14916;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static int solution(int n) {
int answer = 0;
while(true) {
if (n > 10) { // 10 초과 일 때
n -= 5;
answer++;
}
else { // 10 이하일 때
if (n == 3 || n == 1) return -1;
else if (n == 5 || n == 2) {
answer++;
break;
}
else if (n == 10) {
answer += 2;
break;
}
else {
if (n % 2 == 0) { // 짝수인 경우
answer += n / 2;
}
else { // 홀수인 경우
if (n == 7) {
answer += 2; // 7
}
else {
answer += 3; // 9
}
}
break;
}
}
}
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
bw.write(sb.append(solution(n)).toString());
bw.flush();
bw.close();
br.close();
}
}
'Baekjoon' 카테고리의 다른 글
[백준/자바] 1343번 폴리오미노 (0) | 2024.03.28 |
---|---|
[백준/자바] 16953번 A → B (0) | 2024.03.27 |
[백준/자바] 1946번 신입 사원 (1) | 2024.03.26 |
[백준/자바] 1439번 뒤집기 (0) | 2024.03.26 |
[백준/자바] 1026번 보물 (1) | 2024.03.24 |