-
https://www.acmicpc.net/problem/16938
백준 온라인저지 16938번 캠프준비 문제입니다.
#include<iostream> #include<vector> #include<algorithm> using namespace std; int n, l, r, x; vector<int> arr; void Input() { cin >> n >> l >> r >> x; int sum; for (int i = 0; i < n; i++) { cin >> sum; arr.push_back(sum); } } void solution() { int cnt = 0; sort(arr.begin(), arr.end()); for (int i = 1; i < (1 << n); i++) { int total = 0; vector<int> p; for (int j = 0; j < n; j++) { if (i&(1 << j)) p.push_back(arr[j]); } if (p.size() < 2) continue; if (p[p.size()-1] - p[0] < x) continue; for (auto iter : p) total += iter; if (total >= l && total <= r) cnt++; } cout << cnt; } int main(void) { Input(); solution(); }
아이디어
비트마스킹을 이용하여 모든 경우의수를 확인 할 수 있고, 조건에 유의하여 풀이
'알고리즘 > 백준' 카테고리의 다른 글
BOJ13701 중복제거/C++ (0) 2022.03.13 BOJ1562 계단수/C++ (0) 2022.03.13 BOJ18119 단어 암기 /C++ (0) 2022.03.13 BOJ1062/C++ (0) 2022.03.12 BOJ14391/ C++ (0) 2022.01.26 댓글