
그리디로 풀어야할 것 같은데...
sort 한 다음에 제일 무거운거랑 가벼운거 넣기?
두개씩밖에 못넣는다는게 포인트니까
80 70 50 50
이렇게 정렬하고 투포인트 하는 것처럼
안들어가면 큰거-- 해가면서 구하는거지
80 50 => 100보다 큼
80만 태우고 point 1 --;
70 50 =. 100보다 큼
70만 태우고 point 1--;
50 50 == 100
2명 탈 수 있음!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> people, int limit) {
int answer = 0;
sort(people.begin(), people.end());
int p1 = 0, p2 = people.size()-1;
while(p1 <= p2 && p2>=0 && p1<people.size()){
if(people[p1] + people[p2] <= limit) p1++;
p2--;
answer++;
}
return answer;
}

한방에 성공~
'C++ 문제풀기 > 백준-프로그래머스' 카테고리의 다른 글
| 백준 | 1920. 수 찾기 (0) | 2025.10.31 |
|---|---|
| 프로그래머스 | 귤 고르기 (0) | 2025.10.28 |
| 프로그래머스 | 카펫 (0) | 2025.10.28 |
| 프로그래머스 | 가장 많이 받은 선물 (0) | 2025.10.12 |
| 프로그래머스 | 신고 결과 받기 (0) | 2025.10.12 |