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

 

이번에 볼 문제는 백준 3085번 문제인 사탕 게임이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/2309 

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

9명중 7명을 고르는 경우의 수는 36가지로 충분히 적다. 이 모든 경우의 수를 직접 조사하여 합이 100이 되는 7명의 난쟁이쌍을 찾아 문제를 해결할 수 있다.

 

오름차순으로 출력해야하므로 정렬을 먼저 한다면 코드를 편하게 작성할 수 있다.

 

이와 같은 쌍을 찾는 방법은 다양하게 존재하지만, 가장 단순무식한 방법으로는 7중반복문을 작성해 문제를 해결할 수도 있다. 아래의 코드를 참고해보자.

 

아래는 제출한 소스코드이다:

#include <iostream>
#include <algorithm>
using namespace std;

int arr[9];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	for (int i = 0; i < 9; i++) cin >> arr[i];
	sort(arr, arr + 9);

	for (int i1 = 0; i1 < 9; i1++) {
		for (int i2 = i1 + 1; i2 < 9; i2++) {
			for (int i3 = i2 + 1; i3 < 9; i3++) {
				for (int i4 = i3 + 1; i4 < 9; i4++) {
					for (int i5 = i4 + 1; i5 < 9; i5++) {
						for (int i6 = i5 + 1; i6 < 9; i6++) {
							for (int i7 = i6 + 1; i7 < 9; i7++) {
								if (arr[i1] + arr[i2] + arr[i3] + arr[i4] + arr[i5] + arr[i6] + arr[i7] == 100) {
									cout << arr[i1] << '\n' << arr[i2] << '\n' << arr[i3] << '\n' << arr[i4] << '\n' << arr[i5] << '\n' << arr[i6] << '\n' << arr[i7];
									return 0;
								}
							}
						}
					}
				}
			}
		}
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 1748 // C++] 수 이어 쓰기 1  (0) 2022.11.14
[BOJ 25965 // C++] 미션 도네이션  (0) 2022.11.14
[BOJ 24957 // C++] Loop of Chocolate  (0) 2022.11.13
[BOJ 7581 // C++] Cuboids  (0) 2022.11.13
[BOJ 25773 // C++] Number Maximization  (0) 2022.11.13

+ Recent posts