알고리즘 문제 해결/BOJ

[그리디] BOJ 2437 저울

jmkimmessi 2022. 4. 4. 00:00
반응형

https://www.acmicpc.net/problem/2437

 

2437번: 저울

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

www.acmicpc.net

 

문제 해결 알고리즘

 

모든 추의 무게를 정렬 해준 후에 자기보다 왼쪽에 있는 추들의 무게의 합보다 크면 그 합에 +1인 값을 출력해주면 된다. 만약에 없다면 모든 추의 무게의 합에 +1을 해준 값을 출력해준다.

 

이 때, 만약 가장 무게가 가벼운 추의 무게가 1보다 크다면 1을 출력해준다.

 

소스 코드

 

#include <bits/stdc++.h>
using namespace std;

int main(){
    int N; cin >> N;

    vector<int> v(N);

    for(int i=0;i<N;i++){
        cin >> v[i];
    }

    sort(v.begin(), v.end());
    
    int sum = v[0];
    
    if(v[0] > 1){
    	cout << 1;
    	return 0;
    }

    for(int i=1;i<N;i++){
        
        if(v[i] - 1 > sum) break; 
        sum += v[i];
    }

    cout << sum+1;
}
반응형