프로그래머스 구명보트

GGob2._.·2023년 6월 29일
0

algorithm

목록 보기
31/55

문제 설명

사람들의 몸무게와 배에 태울 수 있는 최대 무게가 주어졌을 때, 배를 몇 대를 사용해야 하는지 구하는 문제다.

접근 방식

  • 몸무게 순으로 사람을 정렬하고, leftright를 활용해 가장 가벼운 사람과 가장 무거운 사람을 가리키도록 한다.
  • 모든 사람을 배에 태울 때 까지, while문을 돌며 left가 가리키는 사람 + right가 가리키는 사람의 값이 배의 최대무게보다 덜 나갈 경우, 배 1개를 사용해 2명을 태운다.
  • 그렇지 못할 경우, 배 1개를 사용해 무거운 사람을 담는다.
  • 배 1개에는 2명밖에 타지 못하기에 가능한 방법

작성한 코드

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
            left += 1
            right -=1
        else:
            answer += 1
            right -= 1
            
    return answer
profile
소통을 잘하는 개발자가 되고 싶습니다.

0개의 댓글