[프로그래머스] 구명보트

urzi·2022년 4월 8일
0

PS

목록 보기
19/36

문제

https://programmers.co.kr/learn/courses/30/lessons/42885

알고리즘

그리디 알고리즘
투포인터 알고리즘

풀이

투포인터 알고리즘으로 풀었다.

  1. 일단 배열을 정렬한다.
  2. 포인터 두개를 생성해서 lt는 시작점, rt는 맨 끝점으로 생성한다.
  3. lt와 rt가 같거나 rt가 클 때까지만 돌려준다.
  4. 만약 limit보다 lt, rt 배열값이 더 크면 answer++을 해주고 rt를 -- 해준다.
  5. 그게 아니라면 한 보트에 태울 수 있는 사람이므로 answer++을 해주고 rt--, lt++을 동시에 해준다.

코드

import java.util.*;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;
        Arrays.sort(people);
        int lt = 0;
        int rt = people.length - 1;

        while (lt <= rt) {
            if (limit < people[lt] + people[rt]) {
                answer++;
                rt--;
            } else {
                answer++;
                lt++;
                rt--;
            }
        }

        return answer;
    }
}
profile
Back-end Developer

0개의 댓글