본문 바로가기
BOJ

BOJ 2309 일곱난쟁이

by 홍code 2022. 3. 9.

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

요약

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

'BOJ' 카테고리의 다른 글

BOJ 1018 체스판 다시 칠하기  (0) 2022.03.09
BOJ 2503 숫자야구  (0) 2022.03.09
BOJ 10448 유레카 이론  (0) 2022.03.09
BOJ 3085 사탕게임  (0) 2022.03.09
BOJ 2231 분해합  (0) 2022.03.09

댓글