본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

구명보트 (코딩테스트, 프로그래머스, 파이썬)

by 령과 2022. 3. 6.

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

 

코딩테스트 연습 - 구명보트

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5

programmers.co.kr

나의코드

def solution(people, limit):
    people.sort()
    answer = 0
    small, big = 0, len(people)-1
    while small < big:
        if people[small] + people[big] <= limit:
            small += 1
            big -= 1
        else:
            big -= 1
        answer += 1
    if small == big:
        answer += 1
    return answer

일단 people을 정렬한다.

가장 무거운 사람과 가장 가벼운 사람을 비교해본다. 만약 두 사람의 무게가 limit을 넘어간다면?

가장 무거운 사람은 다른 사람들과는 탈 수 없기 때문에 혼자 탄다고 생각할 수 있다.

big을 1 감소한 것으로 다음 연산에 배제하는 대신 태워 보냈다고 생각하고 answer을 카운트 한다.

만약 무게 제한에 걸리지 않는다면 두 사람을 태워 보냈다고 생각하고 small과 big을 +1, -1 한다.

댓글