※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 16551번 문제인 Potato Sacks이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/16551
각 테스트케이스별로 주어지는 감자는 10개로 고정되어있고, 이 값이 충분히 작음을 이용해 문제를 해결할 수 있다.
감자를 고르는 1024가지 경우에 대하여 선택한 감자의 무게가 원하는 값이 되는 경우가 있는지를 완전탐색해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int K;
int A[10];
bool chk;
void func(int idx, int val) {
if (idx == 10) {
if (val == K) chk = 1;
return;
}
func(idx + 1, val);
func(idx + 1, val + A[idx]);
}
void solve() {
chk = 0;
cin >> K;
for (int i = 0; i < 10; i++) cin >> A[i];
func(0, 0);
if (chk) cout << "YES\n";
else cout << "NO\n";
}
int T;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
while (T--) {
int id; cin >> id;
cout << id << ' ';
solve();
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 20011 // C++] Рекламный щит (1) | 2024.09.19 |
---|---|
[BOJ 10291 // C++] Ribbon (1) | 2024.09.15 |
[BOJ 9997 // C++] 폰트 (2) | 2024.09.13 |
[BOJ 16805 // C++] Where is the Boundary (2) | 2024.09.12 |
[BOJ 16581 // C++] Lie Detector (2) | 2024.09.11 |