티스토리 뷰
추가 주어졌을 때 그 추들의 합으로 표현 불가능한 가장 작은 수를 찾는 문제입니다.
우선 추를 정렬 시킨 뒤, 첫 번 째 추가 1보다 크면 무조건 1은 표현할 수 없는 가장 작은 수입니다.
그리고 무게가 1인 추가 있는 경우, 정렬되어 있으므로, 두 번 째 추부터 더하면서 (합 +1)보다 크면 합+1 이란 수는 표현할 수가 없습니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n;
vector<int>v;
void weight()
{
cin >> n;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end());
}
int main()
{
weight();
int res = 1;
if (v[0] > 1) {
cout << res;
return 0;
}
for (int i = 1; i < n; i++) {
if (v[i] > res + 1)
break;
res += v[i];
}
cout << res + 1;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 / 2294 동전 2 C++ (0) | 2021.01.12 |
---|---|
백준 / 1182 부분수열의 합 C++ (0) | 2021.01.09 |
백준 / 17144 미세먼지 안녕! C++ (0) | 2021.01.02 |
BOJ / 백준 / 1051 숫자 정사각형 C++ (0) | 2020.12.29 |
백준 / BOJ / 1963 소수 경로 C++ (2) | 2020.12.26 |
댓글