๐Ÿ“ Coding Test Study/Algorithm Problem

[Baekjoon][C++] 2309๋ฒˆ ์ผ๊ณฑ๋‚œ์Ÿ์ด ๋ฌธ์ œ์„ค๋ช… ๋ฐ ์ฝ”๋“œ

ibelieveinme 2021. 3. 3. 00:37
728x90
 

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';
		}
	}
}

 

728x90