πŸ’»

[λ°±μ€€] λ™μ κ³„νšλ²• - 2293. 동전 1 λ³Έλ¬Έ

μ•Œκ³ λ¦¬μ¦˜/λ¬Έμ œν’€μ΄ Baekjoon

[λ°±μ€€] λ™μ κ³„νšλ²• - 2293. 동전 1

λ˜νš¨λ‹ˆ 2020. 2. 17. 23:52

문제

n가지 μ’…λ₯˜μ˜ 동전이 μžˆλ‹€. 각각의 동전이 λ‚˜νƒ€λ‚΄λŠ” κ°€μΉ˜λŠ” λ‹€λ₯΄λ‹€. 이 동전을 μ λ‹Ήνžˆ μ‚¬μš©ν•΄μ„œ, κ·Έ κ°€μΉ˜μ˜ 합이 k원이 λ˜λ„λ‘ ν•˜κ³  μ‹Άλ‹€. κ·Έ 경우의 수λ₯Ό κ΅¬ν•˜μ‹œμ˜€. 각각의 동전은 λͺ‡ κ°œλΌλ„ μ‚¬μš©ν•  수 μžˆλ‹€.

μ‚¬μš©ν•œ λ™μ „μ˜ ꡬ성이 같은데, μˆœμ„œλ§Œ λ‹€λ₯Έ 것은 같은 κ²½μš°μ΄λ‹€.

 

μž…λ ₯

첫째 쀄에 n, kκ°€ 주어진닀. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) λ‹€μŒ n개의 μ€„μ—λŠ” 각각의 λ™μ „μ˜ κ°€μΉ˜κ°€ 주어진닀. λ™μ „μ˜ κ°€μΉ˜λŠ” 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

 

좜λ ₯

첫째 쀄에 경우의 수λ₯Ό 좜λ ₯ν•œλ‹€. 경우의 μˆ˜λŠ” 2^31보닀 μž‘λ‹€.

 

예제 μž…λ ₯1

3 10
1
2
5

 

예제 좜λ ₯1

10

 

생각

μ²˜μŒμ—λŠ” 되게 μ–΄λ ΅κ²Œ μ ‘κ·Όν•΄μ„œ μ‘°ν•©μœΌλ‘œ 가짓 수λ₯Ό μ„Έλ €κ³  μƒκ°ν–ˆμ—ˆλ‹€. λ…ΈνŠΈνŒ¨λ“œμ— 예제 μΌ€μ΄μŠ€λ₯Ό 가지고 직접해보닀가 λ»˜μ§“ μž„μ„ λ°”λ‘œ κΉ¨λ‹¬μ•˜λ‹€.  

dp[j] += dp[j-m[i]] 이 뢀뢄을 μ΄ν•΄ν•˜κΈ°κ°€ μ–΄λ €μ› λŠ”λ°, 

3원을 λ§Œλ“ λ‹€κ³  ν•˜λ©΄ 2μ›μœΌλ‘œλ§Œλ“  경우의 μˆ˜μ—μ„œ 1μ›μ˜ 동전을 μ‚¬μš©ν•΄μ„œ 3원을 λ§Œλ“œλŠ” 것이닀.

 

μ•„λž˜μ˜ λΈ”λ‘œκ·Έλ₯Ό μ°Έκ³ ν•˜λ©΄, μ•„μ£Ό μ•„μ£Ό μ„€λͺ…이 잘 λ˜μ–΄ μžˆλ‹€. 

https://baejji-codingbox.tistory.com/entry/%EB%B0%B1%EC%A4%80dp-2293%EB%B2%88

 

[λ°±μ€€][dp] 2293번

μ ‘κ·Ό 방법 λ¬Έμ œμ— λ‚˜μ™€ μžˆλŠ” μ˜ˆμ‹œλ₯Ό 가지고 경우의 수λ₯Ό μž‘μ„±ν•΄λ΄€λ‹€. λͺ¨λ“  λ¬Έμ œκ°€ κ·ΈλŸ¬ν•˜κΈ΄ ν•˜μ§€λ§Œ μ˜ˆμ‹œ 외에도 μ—¬λŸ¬ μΌ€μ΄μŠ€λ₯Ό μ—Όλ‘ν•΄μ„œ κ·œμΉ™μ„ μƒκ°ν•˜λŠ” 것이 ν•„μš”ν•˜λ‹€! μš°λ¦¬κ°€ 가진 동전은 총 μ„Έ 개둜 각각의..

baejji-codingbox.tistory.com

 

μž‘μ„±ν•œ μ½”λ“œ

#include <iostream>

using namespace std;
int m[101]; //동전 λ°°μ—΄
int dp[10001]; // dp[x] : x원을 λ§Œλ“€ 수 μžˆλŠ” 경우의 수 
int n, k;

int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n >> k; //n:λ™μ „μ˜ μ’…λ₯˜, k:κ°€μΉ˜μ˜ ν•©
    
    for(int i=0; i<n; i++){
        cin >> m[i];
    }
    
    dp[0] = 1;
    
    for(int i=0; i<n; i++){
        for(int j=0; j<=k; j++){
            if(j - m[i] >= 0){
                dp[j] += dp [j-m[i]];
            }
        }
    }
    cout << dp[k] << "\n";
}

λ°˜μ‘ν˜•
Comments