백준 2437 저울

2020. 7. 18. 20:10Algorithm/문제풀이

사실 이문제는 다른 사람들의 풀이를 봤다. 답을 보고 어떻게 이런생각을 하지...... 라며 감탄을한 기억이 난다. 

 

여러 개의 추의 합 중 만들 수 없는 가장 작은 합을 구하는 문제이다. 

 

추들을 정렬 후

더하면서 처음으로 합보다 큰 수가 나오면 다음 값을 만들 수 없게된다. 그간 합 + 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