Algorithm

BOJ 11047 c++

최강훈 2020. 7. 16. 15:57

알고리즘

BOJ 11047 동전 0 c++

백준 11047


#include <bits/stdc++.h>
using namespace std;

int n;
int arr[12];
int k;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> arr[i];
    int count = 0;
    while (k > 0) {
        if (arr[n] > k) {
            n--;
            continue;
        }
        k -= arr[n];
        count++;
    }
    cout << count;
}

그리디 알고리즘을 이용.

DP를 쓸 수도 있지만 그러면 시간초과가 남.

동전은 배수관계를 갖기 때문에 가장 큰 녀석을 최대한 많이 쓰면 됨.


max_element는 시작주소와 마지막주소 + 1을 넣으면 최대값이 담긴 곳의 주소를 리턴하는 함수.