반응형
문제
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문을 돌린다.
후기
algorithm에 next_permutation 이라는 함수는 처음 알게 되었는데, 이렇게 신기한게 있을 줄이야.. 상상도 못했었다.
자주 애용해먹어야겠다 +_+..
반응형
'Etc > Algorithm' 카테고리의 다른 글
[BOJ] 2559 수열 (0) | 2022.07.17 |
---|---|
[BOJ]9996번 한국이 그리울 땐 서버에 접속하지 (0) | 2022.07.14 |
[BOJ]11655번 ROT13 (2) | 2022.07.14 |
[BOJ]2979번 트럭 주차 (0) | 2022.07.13 |
[BOJ]10808-알파벳 개수 (0) | 2022.07.12 |