No Rules Rules

일곱 난쟁이 (feat. 백준, 2309번) 본문

생활/코테

일곱 난쟁이 (feat. 백준, 2309번)

개발하는 완두콩 2022. 9. 6. 12:31
728x90
반응형

일곱 난쟁이
https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <numeric>
#include <algorithm>
using namespace std;
int arr[9], ans[7];
bool done, visit[9];
void dfs(register int idx, register int count) {
	if (count == 7) {
		if (accumulate(ans, ans + 7, 0) == 100)
			done = true;
		return;
	}
	for(register int i = idx; i < 9; ++i)
		if (!visit[i]) {
			visit[i] = true;
			ans[count] = arr[i];
			dfs(i + 1, count + 1);
			if (done)
				return;
			visit[i] = false;
			ans[count] = 0;
		}
}
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	done = false;
	for (register int i = 0; i < 9; ++i)
		cin >> arr[i], visit[i] = false;
	dfs(0, 0);
	sort(ans, ans + 7);
	for (register int i = 0; i < 7; ++i)
		cout << ans[i] << "\n";
	return 0;
}
// *&)*@*

 

 

  1. 9개에 대해 7개를 선택할 수 있는 조합을 구합니다.
  2. 각 조합들의 합이 100이 되는 경우, 종료 후 정렬하여 출력합니다.

 

 

728x90
반응형
Comments