[알고리즘C++]구명보트

후이재·2020년 9월 7일
1

오늘의 문제

https://programmers.co.kr/learn/courses/30/lessons/42885#

구명보트

나의 풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> people, int limit) {
    int answer = 0;
    int idx = 0;
    sort(people.begin(), people.end());
    for(int i= people.size()-1;i>=0;i--){
        if(idx == i){
            return ++answer;
        }else if(idx >i)
            return answer;
        if(people[idx] + people[i] <= limit){
            idx++;
        }
        answer++;
    }
}

모범 정답

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> people, int limit) {
    sort(people.begin(), people.end());
    reverse(people.begin(), people.end());
    int N = (int)people.size();
    int res = 0;
    for (int i = 0, j = N - 1; i <= j; i++) {
        if (people[i] + people[j] <= limit) {
            j--;
        }
        res++;
    }
    return res;
}

배울 점

  • sort한 후에 reverse하면 된다는것을 까먹었음. 뒤에서 접근하고 싶을때는 reverse!
profile
공부를 위한 벨로그

0개의 댓글