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

lemythe423·2023년 7월 12일
0
post-thumbnail

문제

💡 풀이

✅ 2명만 태울 수 있다

순서대로 태워야 한다는 말도 없고, 2명의 무게를 합쳐서 limit를 넘는지 아닌지 여부가 중요하기 때문에 우선 무게 순으로 정렬

heavylight 는 각각 현재 기준 가장 무거운/가벼운 사람을 나타낸다.

무거운 사람(heavy)과 가벼운 사람(light)을 같이 태울 수 있나 비교해서 태울 수 있으면 둘 다 태운다. 만약 태울 수 없다면 무거운 사람만 태우고 가벼운 사람은 태우지 않음. 어차피 현재 기준으로 가장 가벼운 사람을 현재 기준 가장 무거운 사람과 함께 태울 수 없다면 이 무거운 사람은 더 가벼운 사람과는 탈 수 없기 때문에 혼자 타야한다.

이런식으로 반복해서 가벼운 사람의 인덱스가 무거운 사람의 인덱스보다 커지게 되면 종료한다.

def solution(people, limit):
    answer = 0
    
    # 가벼운 것 → 무거운 것 순서로 정렬
    people.sort()
    
    light, heavy = 0, len(people)-1
    
    # 무거운 것 + 가벼운 것의 무게가 limit을 넘으면 둘 다 태우고
    # 넘지 못하면 무거운 것만 태움
    while light <= heavy:
        if people[light] + people[heavy] <= limit:
            light += 1
        heavy -= 1
        answer += 1
    return answer
profile
아무말이나하기

0개의 댓글