본문 바로가기

알고리즘

[프로그래머스] 구멍보트 Level 2 [JAVA]

반응형

출처 : programmers.co.kr/learn/courses/30/lessons/42885

 

코딩테스트 연습 - 구명보트

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5

programmers.co.kr

 

풀이 

1. 최대 2명 씩 밖에 탈 수 없다는게 큰 주의사항이다.

2. 정렬 후 , 몸무게가 가장 적은 사람과 가장 큰 사람을 태우려고 해야한다.

3. 작은 사람 2명 태우고 무게 남으면 아까우니까!

4. 조건에서 R>Lindex 로 해서 틀렸는데, R >= Lindex 로 수정해야 했다.

5. 중간에 겹치는 사람은 어차피 태워야 하니까, 계산조건에서 2명으로 계산 되긴하지만, 

   어차피 else 조건에서 answer ++ 증가 된다.

코드 

import java.util.*;

public class Solution {

  public int solution(int[] people, int limit) {
    int answer = 0;
    
    
    int Lindex = 0;
    Arrays.sort(people);

    for( int R = people.length-1; R>=Lindex; R--){
        
        // 둘다 채울 수 있으면 태우고 가장 적은 친구 증가 
        if( people[Lindex] + people[R] <= limit){
            Lindex++;
            answer ++;
        }else{
            answer ++;
        }        
    }  
      
      
    return answer;
    }
}
  
반응형