이 문제는 뭔가 알고리즘 개념을 알아야 할 수 있을 것 같다. 그냥 그런 느낌이 든다. 문제 해석하는 것도 어렵지 않고 이해 하기는 쉬운데 방법을 모르겠다ㅋㅋ
내 생각에는 총 합을 구하고 그 합에서 100을 뺀 값이 다른 키를 가진 사람이라 생각했다. 그래서 두 사람의 키를 더한 값이 차와 같다면 그 두 사람을 제외하면 될 것 같았다.
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;
int main() {
vector<int> v(9);
for(int i = 0; i < 9; i++)
scanf("%d", &v[i]);
int sum = accumulate(v.begin(), v.end(), 0), sum2;
int diff = sum - 100;
for(int i = 0; i < 8; i++){
for(int j = 1; j < 9; j++){
sum2 = v[i] + v[j];
if(sum2 == diff){
v.erase(v.begin() + j);
v.erase(v.begin() + i);
}
}
}
sort(v.begin(), v.end());
for(int i = 0; i < 7; i++)
printf("%d\n", v[i]);
}
보니깐 조금 이상한 부분이 있다.
sum2 == diff 이거 이렇게 하면 안될 것 같은데..
아니다 맞는 것 같다. 결과적으로 보면 합이 100인 7개가 있고 나머지가 다른 거니깐..
아 코드가 잘못됐다. j = 1이 아니고 j = i +1이 되어야 한다.
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;
int main() {
vector<int> v(9);
for(int i = 0; i < 9; i++)
scanf("%d", &v[i]);
int sum = accumulate(v.begin(), v.end(), 0), sum2;
int diff = sum - 100;
for(int i = 0; i < 8; i++){
for(int j = i + 1; j < 9; j++){
sum2 = v[i] + v[j];
if(sum2 == diff){
v.erase(v.begin() + j);
v.erase(v.begin() + i);
}
}
}
sort(v.begin(), v.end());
for(int i = 0; i < 7; i++)
printf("%d\n", v[i]);
}
맞았다!! 오예에에에
'백준' 카테고리의 다른 글
1009 분산처리 (0) | 2019.10.08 |
---|---|
2902 KMP는 왜 KMP일까? (0) | 2019.10.08 |
2292 벌집 (0) | 2019.10.07 |
2920 음계 (0) | 2019.10.06 |
11720 숫자의 합 (0) | 2019.10.06 |