※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts