본문 바로가기
코딩테스트/백준

백준 2293] C++ 동전 1

by Hwan2 2020. 12. 6.
728x90
반응형

 

 

 

 

 

 

 

해당 문제는 백준 사이트에서 풀 수 있습니다.

 

www.acmicpc.net/problem/2293

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

1. 문제

n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다.

이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오.

각각의 동전은 몇 개라도 사용할 수 있다.

사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다.

 

입력

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다.

동전의 가치는 100,000보다 작거나 같은 자연수이다.

 

 

출력

첫째 줄에 경우의 수를 출력한다. 경우의 수는 2^31보다 작다.

 

 

예제 입력 1             
3 10 
1

예제 출력 1     
6



 

2. 조건

1. N개의 동전이 주어진다.

2. N개의 동전은 각각 금액이 다르다.

3. N개의 동전으로 만들 수 있는 K값을 구하여라.(즉, 경우의 수를 모두 구하면 된다.)

 

3. 풀이

이 문제 또한 dp 문제입니다.

 

해당 문제는 프로그래머스의 거스름돈 문제와 같은 문제입니다.

programmers.co.kr/learn/courses/30/lessons/12907

 

코딩테스트 연습 - 거스름돈

Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5

programmers.co.kr

배열에 해당 동전으로 만들 수 있는 경우의수를 계쏙 해서 더해주는 방식으로 풀면 됩니다.

 

처음에 1로 만들 수 있는 경우의 수는 1가지 뿐입니다.

 

1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1

 

2로 만들 수 있는 경우의 수는 다음과 같습니다.

1
2 3 4 5 6 7 8 9 10
0 1 0 1 0 1 0 1 0 1

 

하지만 1과 2로 만들 수 있는 경우의 수는 다음과 같습니다.

 

1 2 3 4 5 6 7 8 9 10
1 1 1 1 1 1 1 1 1 1
1 2 2 3 3 4 4 5 5 6

 

즉, dp[i] = dp[i] + dp[i - Coin] 이 됩니다.

 

이건 직접 써보면서 이해하시길 바랍니다..... 저도 그렇게 이해해서..... ㅠㅠ

 

 

4. 코드

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

#pragma warning(disable: 4996)

using namespace std;

int main() {

    int N, COST;

    cin >> N >> COST;
    
    vector<int> v(N);
    vector<int> dp(COST + 1);
    for (int i = 0; i < N; i++)
        scanf("%d", &v[i]);
    
    dp[0] = 1;
    for (int i = 0; i < v.size(); i++) {
        for (int j = v[i]; j <=COST; j++) {
            dp[j] = dp[j] + dp[j - v[i]];
            cout << dp[j] << " ";
        }
        cout << endl;
    }
    cout << dp[COST] << endl;
    return 0;
}

 

 

 

 

 

 

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 14502] C++ 연구소  (0) 2020.12.22
백준 2565] C++ 전깃줄  (3) 2020.12.08
백준 11047] C++ 동전 0  (0) 2020.12.01
백준 1662] C++ 압축  (0) 2020.11.24
백준 2304] C++ 창고 다각형  (0) 2020.11.23

댓글


스킨편집 -> html 편집에서