그리디로 풀어야할 것 같은데...

sort 한 다음에 제일 무거운거랑 가벼운거 넣기?

두개씩밖에 못넣는다는게 포인트니까

80 70 50 50

이렇게 정렬하고 투포인트 하는 것처럼

안들어가면 큰거-- 해가면서 구하는거지

 

80 50 => 100보다 큼

80만 태우고 point 1 --;

70 50 =. 100보다 큼

70만 태우고 point 1--;

50 50 == 100

2명 탈 수 있음!

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> people, int limit) {
    int answer = 0;
    sort(people.begin(), people.end());
    int p1 = 0, p2 = people.size()-1;
    while(p1 <= p2 && p2>=0 && p1<people.size()){
        if(people[p1] + people[p2] <= limit) p1++;
        p2--;
        answer++;
    }
    return answer;
}

한방에 성공~

+ Recent posts