그리디 - 채울 값어치를 최대한으로 채울 수 있는 가치 코인을 최대 개수로 채워나간다.
// Process
// 1. 코인 개수 입력받는다. 만드려는 값어치를 입력받는다. 코인 개수 만큼의 코인들의 값어치들을 입력받는다.
(각 값어치는 전부 배수 관계, 오름차순)
// 2. 코인값어치 배열이 오름차순이므로, 뒤에서부터 만드려는 값어치가 채워질 때까지 반복한다.
// 2.1. 현재 차례의 코인 가치보다 채워야할 값어치가 더 남아있는지 확인해서
// 2.1.1. 더 남아있으면 -> 채울수 있는만큼의 개수 세고, 채워야할 가치를 그만큼 줄인다.
// 3. 센 개수를 반환한다.
import java.util.Scanner;
class CoinZero {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int coinNumber = sc.nextInt();
int goalValue = sc.nextInt();
int[] coins = new int[coinNumber];
for(int i = 0; i < coinNumber; ++i)
coins[i] = sc.nextInt();
int count = 0;
int validCount;
for (int i = coins.length-1; i >= 0; --i) {
validCount = goalValue / coins[i];
count += validCount;
goalValue = goalValue - (coins[i] * validCount);
}
System.out.println(count);
}
}