알고리즘/프로그래머스

프로그래머스 구명보트

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;
    }
}