ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 스택/큐
  • getOrDefault
  • git
  • 프로그래머스
  • dfs
  • stack
  • PriorityQueue
  • DP
  • 프로그래머스 Lv.2
  • greedy
  • entrySet
  • 코틀린
  • 백준
  • 안드로이드
  • React
  • compareTo()
  • BFS
  • Arrays.sort()
  • Android
  • git bash
  • Queue
  • java
  • sort
  • reactjs
  • Comparator
  • 깃
  • 깃허브
  • HashMap
  • kotiln
  • 해시

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 Lv.2 : 구명보트

2022. 3. 14. 17:21

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

 

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

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

programmers.co.kr

 

풀이

구명보트를 최대한 적게 사용하여 모든 사람을 구출하기 위해,

가장 먼저 사람들의 몸무게가 담겨있는 배열 people을 Arrays.sort()로 정렬해준다.

몸무게가 가장 적은 사람(people[min])과 가장 많은 사람(people[max])의 합계를 limit와 비교해 구출여부를 따진다.

  1. 만약 두 명의 몸무게합이 limit가 넘지 않는다면 두 명 다 보트에 태운다.
  2. 하지만 limit가 넘는다면 몸무게가 많은 사람만 보트에 태운다.
  3. 만약 min==max인 경우, 남은 마지막 한사람을 보트에 태운다.

전체 코드

import java.util.Arrays;
class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0; // 구명보트
        Arrays.sort(people);

        int min=0, max=people.length-1;
        for(int i=0;i<people.length;i++){
            if(people[min]+people[max]<=limit){ // 두 명 구출
                answer++;
                min++; max--;
            }else{ // 몸무게 많은 사람만 구출
                answer++;
                max--;
            }
            if(min==max){ // 한사람만 남았을 때
                answer++;
                break;
            }
            if(min>max) break; // 끝
        }
        
        return answer;
    }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 Lv.2 : 가장 큰 정사각형 찾기  (0) 2022.03.16
[Java] 프로그래머스 Lv.2 : 타겟 넘버  (0) 2022.03.16
[Java] 프로그래머스 Lv.2 : 소수 찾기  (0) 2022.03.13
[Java] 프로그래머스 Lv.2 : 카펫  (0) 2022.03.13
[Java] 프로그래머스 Lv.2 : H-Index  (0) 2022.03.13
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 Lv.2 : 가장 큰 정사각형 찾기
    • [Java] 프로그래머스 Lv.2 : 타겟 넘버
    • [Java] 프로그래머스 Lv.2 : 소수 찾기
    • [Java] 프로그래머스 Lv.2 : 카펫
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바