Problem Solving/BOJ [백준 1182번] [Bruteforce / 비트마스킹] 부분수열의 합 - 728x90 반응형 Approach 부분수열은 비트마스킹을 활용하여 쉽게 처리할 수 있다. 각각의 정수가 들어갈 지 안들어갈 지 선택할 수 있는 상황이므로, 총 가짓수는 $2^N$개이다. 잘 생각해보면, 0과 1을 활용핵서 들어갈 지 안들어갈 지 결정할 수 있고 이는 이진수를 활용해서 처리할 수 있다. 즉, N개의 정수를 활용해서 만들 수 있는 개수는 N개의 비트를 황룡해서 만들 수 있는 수와 완벽하게 동일하다. 따라서 1부터 $1 << N - 1$까지에 대해 합이 s가 되는 개수를 구해주면 된다. 상당히 배울 수 있는 점이 많은 내용이므로 자세한 것은 https://blog.naver.com/jinhan814/222579884777를 참고하도록 하자. Theme 04. 완전 탐색(Brute Force) [개념] (목차 : https://blog.naver.com/jinhan814/222439906974) 이번 글에서는 완전 탐색이란 무엇인지에... blog.naver.com Code #include <bits/stdc++.h> #define fastio cin.tie(0)->sync_with_stdio(0) using namespace std; typedef long long ll; typedef pair<int, int> pii; int move_x[4] = {-1, 1, 0, 0}; int move_y[4] = {0, 0, -1, 1}; int main() { fastio; int n, s; cin >> n >> s; vector<int> v(n); for(int i = 0; i < n; i++){ cin >> v[i]; } int result = 0; for(int i = 1; i < 1 << n; i++){ int cur_sum = 0; for(int j = 0; j < n; j++) if(i & (1 << j)) cur_sum += v[j]; if(cur_sum == s) ++result; } cout << result << "\n"; return 0; } 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기비룡의 컴퓨터이야기 Contents Approach Code 당신이 좋아할만한 콘텐츠 [백준 11779번] [Dijkstra] 최소비용 구하기 2 2022.01.15 [백준 10217번] [Dijkstra / DP] KCM Travel 2022.01.15 [백준 18111번] [Bruteforce] 마인크래프트 2022.01.15 [백준 16936번] [Bruteforce] 나3곱2 2022.01.15 댓글 0 + 이전 댓글 더보기