알고리즘/프로그래머스 문제풀이

[프로그래머스] lv.2 구명보트 풀이

감자156 2023. 11. 19. 20:41
반응형

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

정렬하고 두포인터로 가장 가벼운 사람 + 가장 무거운 사람 조합으로 태워감.

제일 가벼운 사람을 태울 수 있을 때 까지 r_idx를 하나씩 빼감.

가벼운 사람을 태울 수 있으면 가능한 한 많은 가벼운 사람을 태움.

 

코드

def solution(people, limit):
    # 구명보트는 혼자타거나, 둘이타거나
    people.sort()
    res, inter_sum = 0, 0
    l_idx, r_idx = 0, len(people) -1 
    
    while l_idx < r_idx:
        inter_sum = people[l_idx] + people[r_idx]
        if inter_sum <= limit: 
            # 무거운사람 하나만 탈 수 있음
            l_idx += 1 
        # 무겁 + 뚱뚱 둘 다 보냄
        res += 1
        r_idx -= 1 
        
    return res + int(l_idx == r_idx)
반응형