본문 바로가기
알고리즘 문제 풀이

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

by pinok1o 2021. 4. 8.

programmers.co.kr/learn/courses/30/lessons/42885?language=java

문제 해석

최대 2명밖에 탈 수 없다
무게 제한 만큼의 사람만 탈 수 있다
구명보트를 최대한 적게 사용해서 모든 사람을 구출해야 한다

제한사항
무인도에 갇힌 사람은 1명 이상 50,000명 이하입니다.
각 사람의 몸무게는 40kg 이상 240kg 이하입니다.
구명보트의 무게 제한은 40kg 이상 240kg 이하입니다.
구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없습니다.

문제 풀이

핵심은 2명만 탈 수 있다는것
따라서 최대 몸무게를 가진 사람부터 한명씩 데려갈 수 있는 사람을 데려가면 된다
꼭 제한을 최대한 채울 필요는 없다

10, 20, 30, 50, 50, 70, 80
이경우 80 70 인사람이 10, 20 을 데리고 가든 20, 30을 데리고 가든 사람수는 동일


//원래 사람수만큼 보트가 필요하다고 생각하고

//주어진 사람 몸무게 배열 정렬

//배열에서 양쪽 끝에서 줄여가면서
//양쪽 사람의 합이 제한보다 작거나 같으면 보트를 하나 줄여준다


댓글