[Programmers] 구명보트

Date:

[Programmers] 구명보트

Problem URL : 구명보트

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

using namespace std;

int solution(vector<int> people, int limit) {
    int total = people.size();
    int answer = total;
    sort(people.begin(),people.end()); //[1]
    int idx = 0;
    int ridx = total - 1;
    int half = limit / 2;
    while(idx < total && ridx > idx && people[idx] <= half) {
        while(ridx > idx) {
            if(people[idx] + people[ridx] <= limit) {
                answer--;
                break;
            }
            ridx--;
        }
        idx++;
        ridx--;
    }
    return answer;
}

Comments

[1] 두명이 타려면 작은 쪽이 절반이하의 몸무게여야한다.

작은 몸무게부터 탐색해서 남은 사람중 최대한 무거운 사람을 같이 태운다.(그리디)

댓글