1. 문제 링크
2. 문제 설명
아홉 난쟁이의 키를 입력받아 키의 합이 100이 되는 일곱 난쟁이를 찾아 오름차순으로 출력하는 문제입니다.
3. 소스코드
BOJ 2309번 일곱 난쟁이 C++ 풀이입니다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0);
int arr[9];
int sum = 0;
for (int i = 0; i < 9; i++) {
cin >> arr[i];
sum += arr[i];
}
sort(arr, arr + 9);
for (int i = 0; i < 8; i++) {
for (int j = i + 1; j < 9; j++) {
if (sum - arr[i] - arr[j] == 100) {
for (int k = 0; k < 9; k++) {
if (k != i && k != j)
cout << arr[k] << '\n';
}
return 0;
}
}
}
return 0;
}
13, 14번 라인 : 아홉 난쟁이의 키를 입력받으면서 동시에 키의 합을 구합니다.
17번 라인 : 오름차순으로 출력하기 위해 정렬합니다.
18, 19번 라인 : i, j에 0~8까지 수에서 2개를 뽑는 조합을 모두 대입합니다. (0,1 ~ 7,8)
20번 라인 : 아홉 난쟁이의 키의 합에서 i번째 난쟁이와 j번째 난쟁이의 키를 빼서 100이 되는지 확인합니다.
21 ~ 24번 라인 : 20번 라인에서 100이 된다면 정답이므로 i번째 난쟁이와 j번째 난쟁이를 제외한 난쟁이의 키를 출력합니다.
25번 라인 : 정답이 여러 개인 경우 하나만 출력해야 하므로 프로그램을 종료합니다. (break를 사용할 경우 19번 for문만 탈출합니다.)
'Algorithm' 카테고리의 다른 글
[백준 14888번 C++] 연산자 끼워넣기 (0) | 2020.10.07 |
---|---|
[백준 11399번 C++] ATM (0) | 2020.10.05 |
[백준 10814번 C++] 나이순 정렬 (0) | 2020.09.21 |
[백준 2751번 C++] 수 정렬하기 2 (0) | 2020.09.21 |
[백준 2750번 C++] 수 정렬하기 (0) | 2020.09.20 |