โท ๋ฌธ์ ์ค๋ช
์ฐ ์ผ๊ณฑ๋์์ด๋ฅผ ์ฐพ๋ ๋ฌธ์ !
์ฆ, ๊ฐ์ง ๋์์ด 2๋ช ์ด ํฌํจ๋ 9๋ช ์ ๋์์ด ์ค์์ ์ฐ ์ผ๊ณฑ๋์์ด๋ฅผ ์ฐพ์์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ผ๊ณฑ๋์์ด์ ํค๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
โท ๋ฌธ์ ํ์ด
1) ์ผ๊ณฑ ๋์์ด์ ํค์ ํฉ์ด 100์ธ ๊ฒ๊ณผ ์์ด์ ์ฑ์ง์ ์ด์ฉํ๋ค.
2) 9๋ช ์ค, 7๋ช ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ด ์๋ 2๋ช ์ ๋์์ด๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค.(9C7 = 9C2)
3) ์ ์ฒด ํค์ ํฉ์์ 2๋ช ํค๋ฅผ ๋นผ๋ณธ๋ค.
4) ๊ทธ ๊ฐ์ด 100์ด ๋๋ค๋ฉด ๊ทธ ๋์ด ๊ฐ์ง ๋์์ด๋ค์ด๋ค.
โท ์๊ฐ๋ณต์ก๋
๋์์ด์ ์๊ฐ N์ด๋ผ๋ฉด 2๋ช ์ ๋์์ด๋ฅผ ๊ณ ๋ฅผ ๋, N์ ๊ณฑ์ ๊ฒฝ์ฐ์ ์๊ฐ ํ์ํ๋ค.
๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋ O(N^2)์ด๋ค.
โท ์ ๋ต์ฝ๋
#include <iostream>
#include <algorithm>
using namespace std;
#define INPUT_NUM 9
void Input();
void Permutation(int arr[], int sum);
void Output(int arr[], int idx1, int idx2);
int main() {
Input();
return 0;
}
//0. 9๋ช
์ ๋์์ด๋ค์ ํค๊ฐ์ ์
๋ ฅ๋ฐ๋๋ค.
void Input() {
int arr[INPUT_NUM] = { 0, };
int sum = 0;
for (int i = 0; i < INPUT_NUM; i++) {
cin >> arr[i];
//1. ์
๋ ฅ๋ฐ์ผ๋ฉด์ ํค์ ํฉ์ ๊ตฌํ๋ค.
sum += arr[i];
}
//2. ๋ฏธ๋ฆฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.(๋์ค์ ์ ๋ ฌํด๋ ์๊ด์ ์์)
sort(arr, arr + 9);
Permutation(arr, sum);
}
//3. 9๋ช
์ ๋์์ด ์ค์ 2๋ช
์ ๊ณจ๋ผ๋ณธ๋ค.(9C2 ์์ด)
void Permutation(int arr[INPUT_NUM], int sum) {
for (int i = 0; INPUT_NUM; i++) {
for (int j = 1; j < INPUT_NUM; j++) {
//4. ์ ์ฒด ๋์์ด ํค์ ํฉ์ค์ 2๋ช
๊ฐ์ ๋นผ๋ณธ๋ค.
//5. ๊ทธ ๊ฐ์ด 100์ด ๋๋ค๋ฉด ๊ณ ๋ฅธ 2๋ช
์ ๊ฐ์ง ๋์์ด๋ค.
if (sum - arr[i] - arr[j] == 100) {
Output(arr, i, j);
return;
}
}
}
}
//6. 2๋ช
์ ์ ์ธํ ๋๋จธ์ง 7๋์์ด๋ค์ ํค๋ฅผ ์ถ๋ ฅํ๋ค.
void Output(int arr[INPUT_NUM], int idx1, int idx2) {
for (int i = 0; i < INPUT_NUM; i++) {
if (i != idx1 || i != idx2) {
cout << arr[i] << '/n';
}
}
}