몸무게를 순서대로 정렬한 후, 맨 앞과 맨 뒤를 더한 값이 구명보트의 무게 제한 이하인지 계산해보면 된다. 만약 구명보트보다 크다면 뒤에 있는 사람은 무조건 구명보트를 혼자 타야 한다.
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int solution(vector<int> people, int limit) {
int answer = 0;
sort(people.begin(), people.end());
deque<int> dq(people.begin(), people.end());
while (!dq.empty()) {
if (dq.size() == 1) {
answer++;
dq.pop_back();
break;
}
if (dq.front() + dq.back() <= limit) dq.pop_front();
dq.pop_back();
answer++;
}
return answer;
}