백준 2309 일곱 난쟁이
2023. 7. 16. 12:06ㆍ코딩 공부 연습
반응형
쉬운 문제부터 백준 codeplus 문제집을 차례로 풀어보려고 한다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> arr;
for (int i = 0; i < 9; i++)
{
int tmp;
cin>>tmp;
arr.push_back(tmp);
}
sort(arr.begin(), arr.end());
for (int i = 0; i <9; i++)
{
for (int j = i+1; j < 9; j++)
{
int sum = 0;
for (int k = 0; k < 9; k++)
{
if (k != i && k != j)
sum += arr[k];
}
if (sum == 100)
{
for (int idx = 0; idx < 9; idx++)
{
if (idx != i && idx != j)
cout<<arr[idx]<<"\n";
}
return 0;
}
}
}
return 0;
}
난쟁이 수가 9명 밖에 되지 않기에 다중 for문을 마구 사용했다.
9명 중 2명을 빼고 그 키의 합을 계산해 100이 되는 경우만 찾으면 되기 때문에 2명을 고르는 작업부터 진행한다.
남들은 어떻게 짰는지 보고 수정해 보았다.
굉장히 멍청한 방식으로 풀었단걸 알았다. 9명의 합을 다 구해두고, 제외시킬 두 난쟁이의 키만 빼주었을 때 100이 되면 답니다ㅋㅋㅋ
#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> arr;
int sum_all = 0;
for (int i = 0; i < 9; i++)
{
int tmp;
cin>>tmp;
sum_all+=tmp;
arr.push_back(tmp);
}
sort(arr.begin(), arr.end());
for (int i = 0; i <9; i++)
{
for (int j = i+1; j < 9; j++)
{
if (sum_all - arr[i] - arr[j] == 100)
{
for (int idx = 0; idx < 9; idx++)
{
if (idx != i && idx != j)
cout<<arr[idx]<<"\n";
}
return 0;
}
}
}
return 0;
}
더 간략하게 작성할 수 있다.
'코딩 공부 연습' 카테고리의 다른 글
백준 10972 다음 순열, 이전 순열, 모든 순열 (0) | 2023.07.20 |
---|---|
백준 NM과 K(1) (0) | 2023.07.19 |
백준 18870 좌표 압축 (0) | 2023.06.23 |
백준 1920 수 찾기 (0) | 2023.06.22 |
백준 1057 토너먼트 (1) | 2023.06.20 |