Algorithm/1일 1코테

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

대인보우 2020. 12. 16. 16:20
반응형

문제

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

 

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

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

programmers.co.kr

 

def solution(people, limit):
    count = 0
    people.sort()
    
    while people:

        p = people.pop(-1)

        for i, v in enumerate(people):
            if p+v > limit:
                break
            else:
                people.pop(i)
                break
                
        count += 1
    
    return count

테스트케이스는 통과하지만 효율성 1번에서 자꾸 시간초과로 실패함

아무래도 pop을 사용해서 그런 것 같아 비슷한 알고리즘이되 다른 방식으로 수정

 

def solution(people, limit):
    count = 0
    people.sort()
    
    r = len(people)-1
    l = 0
    
    while l <= r :
        if people[r] + people[l] > limit:
            r-=1
        else:
            r -= 1
            l += 1             
        count += 1
    return count

 

반응형