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

게으른 완벽주의자·2023년 1월 26일
0

프로그래머스

목록 보기
15/83
post-custom-banner

프로그래머스_구명보트

구명보트 1개에 최대 2명까지 태울 수 있다

내 답안 코드

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

위 코드를 썼다가 정확성은 다 맞았는데, 효율성이 제로였다
코드를 좀 더 찾아보니까 투 포인터를 쓰더라

추가 답안 코드

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

가장 무거운 사람, 가장 가벼운 사람을 합쳐도 limit을 넘지 않으면 둘 다 한 칸씩 이동한다
아니면 가장 무거운 사람쪽만 한 칸 이동한다

profile
데이터를 공부하고 있습니다
post-custom-banner

0개의 댓글