문제 링크 : www.acmicpc.net/problem/14225
백준 1182번 보다는 약간 업그레이드 된 문제이다.
하지만 로직은 1182번과 동일하다. 결국 bool문을 통한 계수정렬의 방식으로 접근하면 된다.
#include <iostream>
using namespace std;
int arr[21] = {0,}, n = 0;
bool ch[20*100000+1] = {false,};
void dfs(int index, int num){
if(index>n) return;
ch[num] = true;
dfs(index+1, num+arr[index]);
dfs(index+1, num);
}
int main(void) {
cin >> n;
for(int i=0; i<n; i++) cin >> arr[i];
dfs(0,0);
for(int s=0; s<20*100000+1; s++){
if(!ch[s]){
cout << s << "\n";
break;
}
}
return 0;
}
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#3085번 사탕 게임 (C++) (0) | 2021.03.03 |
---|---|
#14500번 테트로미노 (C++) (0) | 2021.03.02 |
#1182번 부분수열의 합 (C++) (0) | 2021.02.24 |
#17427번 약수의 합2 (C++) (0) | 2021.02.24 |
#4375번 1 (C++) (0) | 2021.02.23 |