반응형
#include <iostream>
using namespace std;
int num;
int main() {
int n, k;
int coin[11];
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> coin[i];
}
for (int i = n; i > 0; i--)
{
num += k / coin[i];
k %= coin[i];
}
cout << num;
}
풀이: 입력은 작은 순서대로 저장되기 때문에 정렬은 할 필요가 없다. 두 번째 for문에서 num 변수에 몇 개의 코인을 사용했는지 개수를 저장하고 k 변수에 사용된 코인을 제외한 남은 잔돈을 저장하였습니다. 이 문제에서 그리디 알고리즘이 적용이 가능한 이유는 큰 동전이 그 동전 보다 하나 작은 동전에 배수이기 때문에 그리디 알고리즘으로 풀 수 있습니다.
가장 효율적인 방법이 단순히 큰 동전부터 사용하는 것이기 때문에 (배수 관계일 때) 그리디를 사용했습니다.
반응형
'알고리즘 > 그리디 알고리즘' 카테고리의 다른 글
| [벡준] 13365 - 주유소 (0) | 2023.01.30 |
|---|---|
| [백준] 1789 - 수들의 합 (0) | 2023.01.25 |
| [백준] 10162 - 전자레인지 (0) | 2023.01.25 |
| [백준] 2217 - 로프 (0) | 2023.01.24 |
| [백준] 1931 - 회의실 배정 (0) | 2023.01.19 |