๋ฌธ์ ๋งํฌ
์ฝ๋ ์ ์ถ ๊ธฐ๋ก (๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ)
๋ฉ๋ชจ๋ฆฌ : 1116 KB
์๊ฐ : 0ms
Code
#include <stdio.h>
int main(){
int n, k;
int arr[109], dp[20009];
scanf("%d %d", &n, &k);
for(int i=0 ; i<n ; i++)
scanf("%d", &arr[i]);
for(int i=0 ; i<=k ; i++)
dp[i] = 0;
for(int i=0 ; i<n ; i++){
if (arr[i]>k) continue;
dp[arr[i]] += 1;
for (int j = arr[i]+1 ; j<=k ; j++){
dp[j] += dp[j-arr[i]];
}
}
printf("%d\n", dp[k]);
return (0);
}
C++
๋ณต์ฌ
๋ฉ๋ชจ
๋๋ ์ด๋ ต...
<์ ์์ฌํญ>
โข
if (arr[i]>k) continue; ์ํด์ฃผ๋ฉด dp[arr[i]] += 1; ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ๋์ด๊ฐ!!!!!!!!
(์ด๊ฑฐ ์ฐพ๋๋ฐ 1์๊ฐ..๊ฑธ๋ฆผ)
โข
์์ ๋ฌธ์ ์์๊ธฐ๊ฒ ํ๋ ค๋ฉด ๋ก ์์ ํ๊ธฐ
#include <stdio.h>
int main(){
int n, k;
int arr[109], dp[20009];
scanf("%d %d", &n, &k);
for(int i=0 ; i<n ; i++)
scanf("%d", &arr[i]);
for(int i=0 ; i<=k ; i++)
dp[i] = 0;
dp[0] = 1;
for(int i=0 ; i<n ; i++){
if (arr[i]>k) continue;
//dp[arr[i]] += 1;
for (int j = arr[i] ; j<=k ; j++){
dp[j] += dp[j-arr[i]];
}
}
printf("%d\n", dp[k]);
return (0);
}
C++
๋ณต์ฌ
<๋ฌธ์ ํ์ด>
โข
1 2 5๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์
โข
dp ํจ์๊ฐ ๋ณํด๊ฐ๋ ๊ณผ์