1. 문제 링크
https://www.acmicpc.net/problem/2309
2. 문제 설명
9개의 수를 입력받은 후 7개의 합이 100이 되는 경우를 출력하는 문제입니다.
3. 소스코드
BOJ 2309번 일곱 난쟁이 C++ 풀이입니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int sum = 0;
vector<int> v(9);
for (int i = 0; i < 9; i++) cin >> v[i], sum += v[i];
sort(v.begin(), v.end());
for (int i = 0; i < 8; i++) {
for (int j = i + 1; j < 9; j++) {
if(sum - v[i] - v[j] == 100) {
for (int k = 0; k < 9; k++) {
if (k == i || k == j) continue;
else cout << v[k] << '\n';
}
return 0;
}
}
}
}
9개의 수를 입력받으면서 누적합을 구합니다.
출력할 때 오름차순으로 출력해야 하므로 sort함수를 사용하여 정렬합니다.
이중 for문을 통해 0부터 8까지의 수 중에서 2개를 뽑은 경우의 수 i, j를 구합니다.
sum에서 v[i]와 v[j]의 값을 뺀 결과가 100이 되는지를 확인합니다.
100인 경우 앞에서부터 차례로 출력하면서 k가 i, j인 경우는 continue를 사용해 건너뛰면 됩니다.
'Algorithm > Study' 카테고리의 다른 글
[백준 2577번 C++] 숫자의 개수 (0) | 2020.04.30 |
---|---|
[백준 10093번 C++] 숫자 (0) | 2020.04.29 |
[백준 2587번 C++] 대표값2 (0) | 2020.04.29 |
[백준 2576번 C++] 홀수 (0) | 2020.04.29 |
[백준 2562번 C++] 최댓값 (0) | 2020.04.29 |