프로그래머스 - 구명보트 - Level 2

Byungwoong An·2021년 6월 25일
0

문제

풀이전략

  1. 최소한이 구명보트의 개수를 구하기 위해서는 최대한 많이 보트에 2명씩 태워야한다.
  2. 보트에 최대한 많이 2명씩 태우는 방법은 모든 사람의 무게를 내림차순으로 정렬하여 가장 무거운 사람과 가장 가벼운이 둘이서 같이 타고 갈 수 있으면 2명씩 태우고 그렇지 않으면 무거운 사람만 태우는 방식을 반복하므로 해결 할 수 있다.

코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 내림차순을 만들기위한 함수
bool mySort(const int& a, const int& b){
    return a > b;
}

int solution(vector<int> people, int limit) {
    int answer = 0;
    
    // 내림차순으로 사람들의 무게를 정렬한다. 
    sort(people.begin(), people.end(), mySort);
    int pStart = 0, pEnd = people.size()-1;
    
    while(pStart <= pEnd){
    	// 둘을 같이 한 보트에 탈 수 있는 경우 처리
        if(people[pStart] + people[pEnd] <= limit){
            pEnd--;
        }
        pStart++;
        answer++;
    }
    
    
    return answer;
}

다른분 코드

대다수 풀이 들이 나와 비슷하기 때문에 패스

소감

좋은 아이디어였던거 같다. 프로그래머스는 같은 level2라도 난이도가 너무 상이한게.... 쉽지않다 ㅎㅎ.. 이번문제는 그래도 쉬웠다.

profile
No Pain No Gain

0개의 댓글