본문 바로가기

알고리즘

[programmers] 구명보트


로직

  • 구명보트는 2명만 탈 수 있다.

  • 사람이 결국 모두 다 보트를 타야하니까, 몸무게순으로 정렬한 후, 가장 몸무게 적은 사람(l)이랑 많은 사람(h)을 같이 태우려 해본다. 먄약 l + h가 limit보다 작으면 ok, 크면 h인덱스를 하나 줄여서 비교해본다.

  • h인덱스가 l인덱스보다 클때 진행한다

코드

def solution(people, limit):
    # 최대 2명씩 탄다.
    people = sorted(people)  # [40, 50, 60, 80]
    i = 0
    j = len(people) - 1

    cnt = 0
    while i < j:
        if people[i] + people[j] <= limit:
            cnt += 1
            i += 1
            j -= 1
        else:
            j -= 1

    return len(people) - cnt

'알고리즘' 카테고리의 다른 글

[programmers] 폰켓몬  (0) 2020.09.08
[programmers] 타겟넘버  (0) 2020.09.08
[programmers] 카펫  (0) 2020.09.08
[programmers] 단속카메라  (0) 2020.09.08
[programmers] 후보키  (0) 2020.09.04