#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int N,K;
int result[10001] ={0,};
scanf("%d %d",&N,&K);
vector<int> vec;
for (int i=0; i<N; i++){
int input;
scanf("%d",&input);
vec.push_back(input);
}
//중복을 제외하는 법은 아래와 같이 한번만 계산해야될 부분을 바깥 loop에 감싼다.
for (int i=0;i<vec.size();i++)
{
for (int j=1;j<=K;j++){
if ((j-vec[i]) < 0)
continue;
if ((j-vec[i]) == 0)
result[j]+=1;
else
result[j]+=result[j-vec[i]];
}
}
printf("%d",result[K]);
}
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int N,K;
int result[10001] ={0,};
scanf("%d %d",&N,&K);
vector<int> vec;
for (int i=0; i<N; i++){
int input;
scanf("%d",&input);
vec.push_back(input);
}
//중복을 제외하는 법은 아래와 같이 한번만 계산해야될 부분을 바깥 loop에 감싼다.
for (int i=0;i<vec.size();i++)
{
for (int j=1;j<=K;j++){
if ((j-vec[i]) < 0)
continue;
if ((j-vec[i]) == 0)
result[j]+=1;
else
result[j]+=result[j-vec[i]];
}
}
printf("%d",result[K]);
}
댓글
댓글 쓰기