𝘚𝘭𝘰𝘸 𝘣𝘢𝘡 𝘴𝘡𝘦𝘒π˜₯𝘺

[λ°±μ€€] 11047: 동전 0 - C++ λ³Έλ¬Έ

μ½”λ”©ν…ŒμŠ€νŠΈ μ€€λΉ„/λ°±μ€€

[λ°±μ€€] 11047: 동전 0 - C++

.23 2022. 7. 12. 22:11
문제

μ€€κ·œκ°€ 가지고 μžˆλŠ” 동전은 총 Nμ’…λ₯˜μ΄κ³ , 각각의 동전을 맀우 많이 가지고 μžˆλ‹€.

동전을 적절히 μ‚¬μš©ν•΄μ„œ κ·Έ κ°€μΉ˜μ˜ 합을 K둜 λ§Œλ“€λ €κ³  ν•œλ‹€. μ΄λ•Œ ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 Nκ³Ό Kκ°€ 주어진닀. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)

λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 λ™μ „μ˜ κ°€μΉ˜ Aiκ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 주어진닀. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 κ²½μš°μ— AiλŠ” Ai-1의 배수)

 

좜λ ₯

첫째 쀄에 K원을 λ§Œλ“œλŠ”λ° ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.


그리디 μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•œ 문제.

κ°€μž₯ λ‹¨μˆœν•˜κ²Œ 거꾸둜 κ°€μž₯ 큰 κ°€μΉ˜λ₯Ό 가진 κΈˆμ•‘λΆ€ν„° μƒκ°ν•˜μ—¬ K에 맞게 λΉΌλ‚˜κ°€λ©΄ λœλ‹€.

 

μ½”λ“œ
#include <cstdio>
#define MAX 10

int coin[MAX];
int N, K;

void Calc();

int main(void) {
    scanf("%d %d", &N, &K);

    for(int i = 0; i < N; i++) {
        scanf("%d", &coin[i]);
    }

    Calc();
    return 0;
}

void Calc() {
    int count = 0;

    int temp = K;
    for(int i = N - 1; i >= 0; i--) {
        if(temp < coin[i]) continue;
        else {
            int j = temp / coin[i];
            count += j;
            temp -= j * coin[i];
        }

        if(temp == 0) break;
    }

    printf("%d\n", count);
}
Comments