문제 설명
내 풀이
이번 문제는 구명보트에 최대 2명을 태울 수 있다는 점을 잘 이용해야한다.
그래서 먼저 난 벡터 people을 오름차순으로 정렬 시킨후, 투포인터를 이용하여 가벼운 사람과 무거운 사람(인덱스 맨 앞, 맨 뒤)의 합을 limit에 비교하며 limit를 초과할 경우 무거운 사람만 보내고, limit를 초과하지 않는 경우 두 명 모두 보내는 식으로 문제를 풀었다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> people, int limit) {
int answer = 0;
sort(people.begin(),people.end());
int pivot =0;
int head = people.size() - 1;
while (pivot <= head)
{
if (people[pivot] + people[head] <= limit)
{
answer++;
head--;
pivot++;
}
else
{
answer++;
head--;
}
}
return answer;
}