https://www.acmicpc.net/problem/1182
5개의 숫자중 1개 선택하는경우 + 2개 선택하는경우 + 3개 선택하는경우 ...
5C1 + 5C2.. 2^5
2^5까지의 값을 2진수로 생각해보면
각 자리수를 한번씩 토글한다
해당 자리수 토글을 해당 수열을 선택했다고 생각하자
#include <iostream>
#include <math.h>
using namespace std;
int input[21];
int main()
{
int N, S;
int cnt = 0;
cin >> N >> S;
for (int i = 0; i < N; i++)
{
cin >> input[i];
}
for (int i = 1; i < pow(2, N); i++)
{
int sum = 0;
for (int j = 0; j < N; j++)
{
if (i & (1 << j)) {
sum += input[j];
}
}
if (sum == S)
cnt++;
}
cout << cnt << endl;
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준]그룹 단어 체커 - 백준 (0) | 2021.03.31 |
---|---|
[백준]DFS와 BFS - 복습 (0) | 2021.03.31 |
[백준]단어 정렬 - 복습 (0) | 2021.03.22 |
[백준]RGB거리 - 복습 DP (0) | 2021.03.17 |
[백준] 한 줄로 서기 - 복습 (0) | 2021.03.17 |
댓글