마음 편하게 짜면 되는 그리디 문제다.
오답이 나올 여지가 없는 문제라서 정말 힐링이 된다.
금액이 큰 단위의 동전부터 최대한 사용하면 되기 때문에 입력받은 순서 반대로 그리디를 돌리면 된다.
#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
constexpr bool local = true;
#else
constexpr bool local = false;
#endif
#define FASTIO ios_base::sync_with_stdio;cin.tie(nullptr);
#define debug if constexpr (local) std::cout
#define endl '\n'
int main(){
int N, K; cin >> N >> K;
vector<int> coin;
int cnt = 0;
for (int i = 0; i < N; i++){
int t; cin >> t;
coin.push_back(t);
}
for (int i = N-1; i >= 0; i--){
int val = coin[i];
int tmp = K/val;
cnt += tmp;
K -= val*tmp;
}
cout << cnt;
}