[Baekjoon][C++] 2309λ² μΌκ³±λμμ΄ λ¬Έμ μ€λͺ λ° μ½λ
2309λ²: μΌκ³± λμμ΄
μν κ°μ μ€μ κ±Έμ³ λμμ΄λ€μ ν€κ° μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ ν€λ 100μ λμ§ μλ μμ°μμ΄λ©°, μν λμμ΄μ ν€λ λͺ¨λ λ€λ₯΄λ©°, κ°λ₯ν μ λ΅μ΄ μ¬λ¬ κ°μ§μΈ κ²½μ°μλ μ무거λ μΆλ ₯νλ€.
www.acmicpc.net
β· λ¬Έμ μ€λͺ
μ° μΌκ³±λμμ΄λ₯Ό μ°Ύλ λ¬Έμ !
μ¦, κ°μ§ λμμ΄ 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';
}
}
}