반응형

 

문제

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

풀이 과정

9명 중 7명을 골라서 합이 100인 것. ( 9 - 7 = 100 )

오름차순으로 출력

 

코드

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
	int a[9];
	for (int i = 0; i < 9; ++i)
	{
		cin >> a[i];
	}
	sort(a, a + 9);

	while (next_permutation(a, a + 9))
	{
		int sum = 0;
		for (int i = 0; i < 7; ++i)
			sum += a[i];
		if (sum == 100)
			break;
	}
	for (int i = 0; i < 7; ++i)
		cout << a[i] << "\n";
}

풀이

1. 9명 난쟁이의 키를 입력받는다.

2. 난쟁이를 키순으로 sort 시켜준다.

3. 난쟁이 7명의 키가 100이 나올때까지 while문을 돌린다.

 

후기

algorithmnext_permutation 이라는 함수는 처음 알게 되었는데, 이렇게 신기한게 있을 줄이야.. 상상도 못했었다.

자주 애용해먹어야겠다 +_+..

반응형

'Etc > Algorithm' 카테고리의 다른 글

[BOJ] 2559 수열  (0) 2022.07.17
[BOJ]9996번 한국이 그리울 땐 서버에 접속하지  (0) 2022.07.14
[BOJ]11655번 ROT13  (0) 2022.07.14
[BOJ]2979번 트럭 주차  (0) 2022.07.13
[BOJ]10808-알파벳 개수  (0) 2022.07.12

+ Recent posts