문제링크
구명보트
풀이
import java.util.Arrays;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people);
int right = people.length - 1;
int left = 0;
while(right >= left){
if(people[left] + people[right] <= limit){
left++;
}
answer++;
right--;
}
return answer;
}
}
해설
- 제한조건
- 사람들의 몸무게를 담은 배열
people
를 정렬한번 해준다.
- 그 다음에는 왼쪽과 오른쪽 인덱스를 담을 변수인
right
와 left
를 만들어준다.
- 그 다음엔 반복문을 도는데, 어차피 보트에 무조건 한명은 탈 수 있기에,
answer+1
는 해준다.
- 가벼운 사람과 무거운 사람의 몸무게를 더했을 때, 최대 무게 수용량인
limit
보다 작다는건 둘 다 탈 수 있다는 것을 말한다.
- 어쨌건 뒤에서
answer+1
은 해주니까, 대신 left 인덱스를 +1
해준다.
소감
- 스스로 풀지 못한 문제이다.
- 다음엔 이런 아이디어도 이용해서 한 번 풀어보자.