[문제링크]
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
int idx = 0;
Arrays.sort(people);
for(int i = people.length - 1; i >= idx; i--) {
if(people[i] + people[idx] <= limit) {
idx++;
}
answer++;
}
return answer;
}
}
접근법
- people 배열을 오름차순 정렬한다.
- [제일 가벼운 + 제일 무거운]조합을 먼저 처리하는 것이 효율적인 방법이므로 가벼운 값을 기준으로 조건을 만족하는지 확인한다.
- 이때, 조건이 맞다면 인덱스 값을 증가시켜 그 다음 가벼운 수를 기준으로 조건을 확인한다.
- for문을 돌 때마다 answer을 증가하도록 한다.
탐욕법 (그리디 알고리즘)
매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법으로
위의 코드와 같은 진행 방식을 가진다.
자세한 설명은 구글링을 통해 쉽게 학습할 수 있다.
'💻코딩 > 💡Programmers' 카테고리의 다른 글
[프로그래머스|JAVA] 귤 고르기 | int[] -> ArrayList<Integer> (0) | 2025.04.05 |
---|---|
[프로그래머스|JAVA] 점프와 순간 이동 (0) | 2025.03.21 |
[프로그래머스|JAVA] 카펫 | 그림 설명 ⭕️ (1) | 2025.03.10 |
[프로그래머스|JAVA] 짝지어 제거하기 | Stack | 설명⭕️ | 효율성🥲 (1) | 2025.03.07 |
[프로그래머스|JAVA] 피보나치 수 | 시간초과 유의 (2) | 2025.02.27 |