프로그래머스 구명보트 - C++

JangGwon·2022년 10월 17일
0

문제 설명

내 풀이
이번 문제는 구명보트에 최대 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;
}

0개의 댓글