반응형

문제 출처 :

 

https://programmers.co.kr/learn/courses/30/lessons/42886

 

 

 

알고리즘 분석 :


문제 해결에 필요한 사항

1. Greedy

 

작은 추들부터 누적 합을 더해가며 현재 누적합 + 1보다 현재 추의 무게가 크다면

 

이전의 추들을 모두 합쳐서도 현재 추를 만들어 낼 수 없다는 의미가 되기에 해당 추는 만들어 낼 수 없다는 것이 된다.

 

따라서 해당 추는 만들 수 없지만, 그 중 만들 수 없는 추의 최소 크기는 누적합 + 1이 된다.

 

 

 

 

 

소스 코드 : 

 
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> weight) {
    int answer = 0;
    sort(weight.begin(), weight.end());
    for(int i = 0 ; i < weight.size(); i++){
        if(answer + 1 < weight[i])
            return answer + 1;
        answer += weight[i];
    }
    return answer + 1;
}
반응형

'Applied > 알고리즘 문제풀이' 카테고리의 다른 글

[5397번] 키로거  (0) 2019.10.10
[1248번] 공통조상  (0) 2019.09.27
[1249번] 보급로  (0) 2019.09.09
[Programmers] 영어 끝말잇기  (0) 2019.09.05
[Programmers] N개의 최소공배수  (0) 2019.09.03