알고리즘/프로그래머스

[프로그래머스] 구명보트 C++ (Lv.2)

lheunoia 2023. 4. 18. 16:33

 

 

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이번 문제는 탐욕법(Greedy) 문제였습니다.

 

 

 

 

 

📝 문제 풀이

1. 구명보트는 최대 2명이 탈 수 있으므로 두 개의 인덱스 s, e를 선언

2. 몸무게를 오름차순으로 정렬 ⭐️

3. 몸무게가 가장 적은 사람과 가장 많은 사람의 합이 limit보다 작거나 같다면 구명보트에 함께 탈 수 있으므로 s++

4. while 문을 한번 돌 때마다 무조건 구명보트가 1번 사용되므로 e--, answer++

 

 

 

 

 

👩🏻‍💻 C++ 코드

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

using namespace std;

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

 

프로그래머스 - 결과 화면

 

 

 

 

반응형