// 코인문제 p.57
/**
1, 5, 10, 50, 100, 500원짜리가 각각 C1, C5, C10, C50, C100, C500개씩 있다.
A원을 지불하려면 몇 개의 동전이 있어야 할까. 지불 방법은 적어도 1개는 존재한다고 가정한다.
**/
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
int ans = 0;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
final int[] V = {1,5,10,50,100,500};
int[] C = {3,2,1,3,0,2};
int A = 620;
// 큰 것부터 넣는다. 탐욕알고리즘
for (int i = 5; i >= 0; i--) {
int t = min(A / V[i], C[i]); //
A -= t * V[i];
ans += t;
}
bw.write("ans : " + ans + "\n"); // 출력 6(500x1, 50x2, 5x2 합계 6개)
bw.close();
// br.close();
}
public static int min(int a, int b) {
if (a > b) return b;
else return a;
}
}
2018년 7월 13일 금요일
탐욕알고리즘 - 1
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기