728x90
반응형

💻 문제 정의
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.
예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.
구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.
💡 접근 및 설계
두 포인터로 접근하였다. 몸무게가 가장 많이 나가는 사람과 가장 적게 나가는 사람을 함께 태우고, 보트가 버티는 무게라면 보낸다. 만약 아니라면 몸무게가 가장 많이 나가는 사람 혼자 태워서 보낸다.
✏️ 알고리즘 풀이
left = 0
right = len(people)-1
boat = 0
while left <= right:
curr_weight = people[left] + people[right]
if curr_weight > limit:
boat += 1
right -= 1
else:
boat += 1
left += 1
right -= 1
처음에 보트 한 대에 가장 가벼운 사람과 무거운 사람을 태워본다. curr_weight가 limit보다 크다면 보트를 하나 증가하고, 가장 무거운 사람을 태운다. 이후 2번째로 무거운 사람과 가장 가벼운 사람을 함께 태워본다.
다음의 과정을 계속 반복하여 최종 boat를 리턴한다.
🗒️ 최종 제출 코드
def solution(people, limit):
people.sort()
left = 0
right = len(people)-1
boat = 0
while left <= right:
curr_weight = people[left] + people[right]
if curr_weight > limit:
boat += 1
right -= 1
else:
boat += 1
left += 1
right -= 1
return boat
💭 오늘의 회고
-
728x90
반응형
'Coding-Test > 프로그래머스' 카테고리의 다른 글
| [Python] 단속카메라 (0) | 2026.03.24 |
|---|---|
| [Python] 섬 연결하기 (0) | 2026.03.23 |
| [Python] 조이스틱 (0) | 2026.03.21 |
| [SQL] FrontEnd 개발자 찾기 (0) | 2026.03.06 |
| [SQL] 상품을 구매한 회원 비율 구하기 (0) | 2026.03.05 |