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

IT공부중·2020년 3월 18일
0

알고리즘

목록 보기
3/49

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

def solution(people,limit):
    people.sort()
    length=len(people) # 길이만큼
    light=0
    heavy=length-1
    count=0
    while(light<heavy): # 헤비가 라이트보다 작을 때까지 반복
        if people[light]+people[heavy]<=limit: 
            count+=1
            light+=1
            heavy-=1
        else:
            heavy-=1
    return length-count

무게순으로 정렬을 한다.
제일 가벼운 사람의 index -> 0
제일 무거운 사람의 index -> length - 1
두명이서 탄 보트의 개수 -> count
총 구명보트의 개수 -> length - count

제일 가벼운 사람이랑 제일 무거운 사람이랑 태워 본다.
무게를 합쳐서 limit을 넘는다면 무거운 쪽의 index를 -1 한다.
무거운 사람은 혼자 탄걸로 계산한다.
무거운쪽의 인덱스가 가벼운쪽 보다 작을 때까지 반복한다음
전체의 개수에서 두명이서 탄 보트의 개수 만큼 빼면 총 보트의 개수가 된다.

profile
4년차 프론트엔드 개발자 문건우입니다.

0개의 댓글