알고리즘/프로그래머스
프로그래머스 구명보트
anott
2021. 9. 7. 23:24
출처: 프로그래머스 코딩 테스트 연습 https://programmers.co.kr/learn/courses/30/lessons/42885
코딩테스트 연습 - 구명보트
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5
programmers.co.kr
제출 날짜: 2021년 9월 7일 화요일
생각
정렬하는 것까지는 혼자 생각했지만 그 이후는 방향을 잘못 잡고 풀고 있었다. 힌트(https://programmers.co.kr/questions/15422)를 통해 어떻게 풀어야하는지 감을 잡을 수 있었다.
코드
import java.util.*;
class Solution {
public int solution(int[] people, int limit) {
int answer = 0;
Arrays.sort(people); // 정렬
int start = 0; // 시작 (앞에서 뒤로 이동)
int end = people.length - 1; // 끝 (뒤에서 앞으로 이동)
while(true) {
if(people[start]+people[end] <= limit) {
start++; // 두명 더해서 limit 이하라면 start+1
}
end--; // limit 이상이하 상관 없이 무조건 end-1
answer++;
if(start > end) {
break;
} else if(start==end) { // 마지막에 같다면 횟수 1 추가
answer++;
break;
}
}
return answer;
}
}