알고리즘&자료구조/문제

[BOJ] 2309 일곱 난쟁이 C++

Nakuri 2023. 2. 2. 08:01
728x90

개요

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

브롱즈급 브루트포스 문제다.

 

본문

풀이

생각보다 오래 걸렸다,,!!

난쟁이 9명 중 7명을 추려내려고 하니 여간 복잡한 게 아니었는데,,

반대로 생각해 보니 2명만 빼면 되는 것이었다.

브루트포스로 정답을 골라낸 후 1000으로 바꿔주었다.(모든 입력 값은 100 이하)

주의할 점은 값을 오름차순으로 정렬 후 출력해야 한다는 점!

코드

#include <iostream>
#include <algorithm>
using namespace std;
constexpr int RANGE = 9;

int t[RANGE];
int sum = 0;

void Search(){
	for (int i = 0; i < RANGE; i++) {
		for (int j = 0; j < RANGE; j++) {
			if (i == j) continue;
			if (sum - t[i] - t[j] != 100) continue;
			t[i] = 1000;
			t[j] = 1000;
			return;
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	for (int i = 0; i < RANGE; i++) 
	{
		cin >> t[i];
		sum += t[i];
	}

	Search();

	sort(t, t + RANGE);

	for (int i = 0; i < 7; i++)
		cout << t[i] << "\n";
}

'알고리즘&자료구조 > 문제' 카테고리의 다른 글

[BOJ] 2178 미로탐색 C++  (0) 2023.02.03
[BOJ] 2644 촌수계산 C++  (0) 2023.02.03
[BOJ] 1260 DFS와 BFS C++  (0) 2023.02.02
[BOJ] 2606 바이러스 C++  (0) 2023.02.02
[BOJ] 2579 계단오르기 C++  (0) 2023.01.19