반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/42885
- 무게 제한이 있는 보트에 최대 2명씩 태워 보낼 수 있을 때 모든 사람을 태워보낼 수 있는 최소 횟수 구하기
- 사람들의 몸무게를 오름차순 정렬한 뒤 (최소 무게 + 최대 무게)로 판단하기
- 주석 설명 참고
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
int min = 0;
Arrays.sort(people);
for(int max = people.length - 1; min <= max; max--) { // 최대 무게의 인덱스부터 시작
if(people[min] + people[max] > limit) { // 최소 무게와 최대 무게의 합이 무게 제한에 걸리면
answer++; // 최대 무게 혼자 보트에 태워 보낸다 왜냐하면 최대 무게랑 최소 무게의 합이 제한에 걸렸다는건 누구랑 타도 제한에 걸린다는거니까 혼자 가야 한다
} else { // 무게 제한에 안걸리면
answer++; // 둘을 같이 보트에 태워 보낸다
min++; // 둘을 보냈다는건 최소 무게와 최대 무게가 없어졌다는 의미인데 최대 무게는 반복문으로 하나씩 줄어들기 때문에 최소 무게의 인덱스는 1을 증가 시킨다
}
}
return answer;
}
}
반응형
LIST
'JAVA > Algorithm' 카테고리의 다른 글
[프로그래머스/java] 올바른 괄호 (stack 사용 유무) (0) | 2021.01.03 |
---|---|
[프로그래머스/java] 다음 큰 숫자 (2진수의 1개수 세기 - bitCount()) (0) | 2021.01.03 |
[프로그래머스/java] 위장 (HashMap - 가능한 조합의 개수) (0) | 2021.01.02 |
[프로그래머스/java] 전화번호 목록 (문자열 비교 - hashCode) *2021 첫 글* (0) | 2021.01.01 |
[프로그래머스/java] 큰 수 만들기 (0) | 2020.12.29 |