그리디 알고리즘
1. N을 각각 5과 3로 나누고 나머지가 없으면 그 몫을 저장한다. (배열 arr3, arr5)
2. (arr3*3 + arr5*5) = N 인 값을 찾으면 된다. (찾아서 제일 작은 값을 구한다)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | |
| 3 | 0 | 0 | 0 | 1 | 0 | 0 | 2 |
| 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
|
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.util.Scanner;
public class Problem2839 {
public static void main(String[] args) {
final int MIN = 987654321;
int ans = MIN;
int num = 0;
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] arr3 = new int[N+1];
int[] arr5 = new int[N+1];
for(int i=1;i<=N;i++) {
if(i%3==0) {
arr3[i] = i/3;
}
if(i%5==0) {
arr5[i] = i/5;
}
}
for(int i=0;i<=N;i++) {
for(int j=0;j<=N;j++) {
if((arr3[i]*3+arr5[j]*5)==N) {
num = arr3[i]+arr5[j];
ans = Math.min(ans, num);
}
}
}
if(ans==MIN) {
System.out.println(-1);
} else {
System.out.println(ans);
}
}
}
|
cs |
'Coding > 백준' 카테고리의 다른 글
| 10162번 전자레인지 (0) | 2021.05.08 |
|---|---|
| 2217번 로프 (0) | 2021.05.03 |
| 1008번 A/B (0) | 2021.03.13 |
| 2557번 Hello World (0) | 2021.03.13 |
| 14438번 수열과 쿼리 17 (0) | 2021.03.10 |