https://school.programmers.co.kr/learn/courses/30/lessons/42885
이번 문제는 탐욕법(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;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 징검다리 건너기 C++ (Lv.3) (0) | 2023.04.19 |
---|---|
[프로그래머스] 풍선 터트리기 C++ (Lv.3) (0) | 2023.04.19 |
[프로그래머스] 등대 C++ (Lv.3) (0) | 2023.04.18 |
[프로그래머스] 부대복귀 C++ (Lv.3) (0) | 2023.04.18 |
[프로그래머스] 할인 행사 C++ (Lv.2) (0) | 2023.04.18 |