title: "[프로그래머스] 구명보트 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/42885"
description: "프로그래머스 Level 2 문제 [구명보트]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(people, limit):
    people.sort()
    answer = 0
    
    # 가장 무거운 사람과 가장 가벼운 사람을 짝지어서 태울 수 있으면 태우고,
    # 아니면 무거운 사람 한명만 태웁니다. (가벼운 사람 한명만 태워도 똑같음)
    # 투 포인터로 해결합니다.
    light, heavy = 0, len(people) - 1
    
    while light <= heavy:
        # 예외처리: light == heavy인 경우 그 한명 태우면 끝입니다.
        if light == heavy:
            answer += 1
            break
        
        if people[light] + people[heavy] <= limit:
            answer += 1
            light += 1
            heavy -= 1
            
        else:
            answer += 1
            heavy -= 1

    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges