728x90
https://www.acmicpc.net/problem/11047
그리디 알고리즘의 가장 기초문제
9일전에 풀었을때랑 지금 풀었을때랑 조금 풀이방법이 달랐다.
이전에는 for 문을 사용해 k 를 나누어서 풀었다면, 오늘은 while 문을 사용해 반복형식으로 풀었다.
저번 풀이가 더 좋은 풀이였다.
package BAEKJOON.Silver.Ⅳ;
import java.util.Scanner;
public class NO11047 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int [] coins = new int[n];
for (int i = 0; i < n; i++) {
coins[i] = sc.nextInt();
}
int count = 0;
// 오름차순으로 정렬되있기 때문에 뒤에서부터 확인한다.
for (int i = n-1; i >= 0; i--) {
if( coins[i] <= k) {
// k 를 coins[i] 로 나눈 몫
count += k / coins[i];
// k 는 coins[i] 로 나눈 나머지
k = k % coins[i];
}
}
System.out.println(count);
}
}
별로
package BAEKJOON.Silver.Ⅳ;
import java.util.Scanner;
public class NO11047_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //동전개수
int k = sc.nextInt(); //원
int count = 0;
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
while(true) {
if( k - arr[n-1] < 0 ) {
n --;
} else {
k = k - arr[n-1];
count++;
}
if( k == 0 ) {
break;
}
}
System.out.println(count);
}
}
728x90
'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글
백준 JAVA 2217 로프 (0) | 2022.08.13 |
---|---|
백준 JAVA 11399 ATM (0) | 2022.08.13 |
백준 JAVA 1977 프린터 큐 (0) | 2022.08.12 |
백준 JAVA 1874 스택 수열 (0) | 2022.08.12 |
백준 JAVA 4949 균형잡힌 세상 (0) | 2022.08.11 |
댓글