백준 2437 저울
2020. 7. 18. 20:10ㆍAlgorithm/문제풀이
사실 이문제는 다른 사람들의 풀이를 봤다. 답을 보고 어떻게 이런생각을 하지...... 라며 감탄을한 기억이 난다.
여러 개의 추의 합 중 만들 수 없는 가장 작은 합을 구하는 문제이다.
추들을 정렬 후
더하면서 처음으로 합보다 큰 수가 나오면 다음 값을 만들 수 없게된다. 그간 합 + 1이 답이된다.
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int N;
vector<int> input();
int main(){
vector<int> scale = input();
int base = 1;
for(auto sc : scale){
if(base < sc)
break;
else
base+=sc;
}
printf("%d", base);
}
vector<int> input(){
scanf("%d", &N);
vector<int> scale(N, 0);
for(int i = 0; i < N; i++)
scanf("%d", &scale[i]);
sort(scale.begin(), scale.end());
return scale;
}
'Algorithm > 문제풀이' 카테고리의 다른 글
백준 5052번 (0) | 2021.01.10 |
---|---|
백준 1644 소수의 연속합 (0) | 2020.07.19 |
백준 1786 - 찾기 (0) | 2020.07.18 |
백준 2580 스도쿠 (0) | 2020.05.06 |
백준 5639 이진 검색 트리 (0) | 2020.04.17 |