반응형
<next_permutation> 모든 경우의 수 정렬
벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정
baebalja.tistory.com
이 문제는 next_permutaion 함수를 사용하면 된다.
해당 함수를 모른다면 위의 링크에 가서 한번 숙지하고 오자.
9명의 난쟁이 중에 일곱 난쟁이의 키의 합이 100이 됐을 때 난쟁이의 키를 오름차순으로 출력하면 된다.
즉, next_permutaion 함수를 사용해서 모든 경우의 수를 살펴보면서 첫 인덱스부터 7번째 인덱스까지
합산하여 그 값이 100이면 멈추고 이에 해당하는 난쟁이의 키를 순서대로 출력하면 되는 것이다.
일곱 난쟁이를 찾을 수 없는 경우는 없다고 하니 다음 코드처럼 구현하면 된다.
#include <iostream>
#include <algorithm>
using namespace std;
int a[9];
int main() {
for (int i = 0; i < 9; i++) {
cin >> a[i];
}
sort(a, a + 9);
do {
int sum = 0;
for (int i = 0; i < 7; i++)sum += a[i];
if (sum == 100)break;
} while (next_permutation(a, a + 9));
for (int i = 0; i < 7; i++)cout << a[i] << "\n";
return 0;
}
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
반응형
'백준 > 구현' 카테고리의 다른 글
[백준 9935번 / C++] 문자열 폭발 (0) | 2022.01.17 |
---|---|
[백준 2979번 / C++] 트럭 주차 (0) | 2022.01.17 |
[백준 10808번 / C++] 알파벳 개수 (0) | 2022.01.17 |
[백준 2559번 / C++ ] 수열 (0) | 2022.01.14 |
[백준 9996번/ C++] 한국이 그리울 땐 서버에 접속하지 (1) | 2022.01.13 |
댓글