BOJ 2309 일곱난쟁이

문제링크 : https://www.acmicpc.net/problem/2309

BOJ_2309

요약

9명의 난쟁이중 키의 합이 100이되는 7명을 뽑아 오름차순으로 출력

풀이

7명의 난쟁이의 키의 합을 100으로 맞춰야 하니깐 전체 난쟁이의 키의 합에서 100을 뺀만큼의 수를 두명의 난쟁이로 맞춰도 된다. -> 9C7 = 9C2 , 주의해야 할점은 스페셜저지 문제는 정답이 여러개가 나올수가 있기때문에 그중에 한개만 출력하면 정답처리된다. 그래서 조건에 맞는 2명의 난쟁이를 최초로 찾으면 탐색을 멈추고 탈출해야 한다. 그리고 sort를 이용해서 오름차순으로 정렬해준다.

코드

#include<iostream>
#include<algorithm>
using namespace std;
int arr[9],cnt=0;
int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	for (int i = 0; i < 9; i++){
		cin >> arr[i];
		cnt += arr[i];
	}
	for (int i = 0; i < 9; i++) {
		for (int j = i + 1; j < 9; j++) {
			if (arr[i] + arr[j] == (cnt - 100)) {
				arr[i] = -1, arr[j] = -1;
				break;
			}
		}
		if (arr[i] == -1)break;
	}
	sort(arr, arr + 9);
	for (int i = 2; i < 9; i++)
			cout << arr[i] << "\n";
	return 0;
}

Comments