티스토리 뷰

알고리즘/백준

백준 / 2437 저울 C++

4567은 소수 2021. 1. 6. 11:09

www.acmicpc.net/problem/2437

 

2437번: 저울

하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓

www.acmicpc.net

추가 주어졌을 때 그 추들의 합으로 표현 불가능한 가장 작은 수를 찾는 문제입니다.

우선 추를 정렬 시킨 뒤, 첫 번 째 추가 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;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함