프로그래머스 : 구명보트

2021. 10. 29. 16:44문제풀기/프로그래머스

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

 

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

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

programmers.co.kr

투 포인터로 풀었다. (이게 투 포인터 맞나...?)

어차피 최대 2명씩 밖에 탈 수 없기 때문에, people을 sorting 한 후, 가장 왼쪽, 가장 오른쪽부터 하나씩 오면서 더해준다.

이 때, people[left] + people[right] 가 limit을 넘으면 right만 이동하고 answer에 1을 더해준다.

넘지 않으면 두 명 다 동시에 탈 수 있기 때문에, left,right 둘 다 이동하고 answer에 1을 더해준다.

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