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

Jaewoong2·2021년 2월 6일
0

알고리즘공부

목록 보기
22/35



접근법

가장 작은 몸무게와 가장 큰 몸무게를 같이 함께 보트에 태워야지 가장 적은 수의 보트를 사용 할 수 있다.

풀이

먼저 people 의 몸무게가 들어있는 배열을 먼저 오름차순으로 정렬을 해준다. 가장 몸무게가 적은 사람과,
가장 몸무게가 큰사람과의 몸무게의 합이 limit 보다 큰지 확인을 한다.

만약, limit 보다 크다면, 가장 큰 몸무게 사람을 제거 해주고, 태워야 하는 보트 수를 1 증가시킨다.
만약, limit 보다 작다면, 가장 큰 몸무게의 사람과 가장 작은 몸무게의 사람을 모두 제거해준다. 그리고 보트의 수를 1 증가 시킨다.

이 과정을 태워야 할 사람이 있을 때 까지 반복한다.

  def solution(people, limit):
      from collections import deque
      peoples = deque(sorted(people))
      boat = 0

      while len(peoples) > 0:
          if peoples[0] + peoples[len(peoples) - 1] <= limit and len(peoples) > 1:
              peoples.popleft()
              peoples.pop()
              boat += 1
          else:
              boat +=1
              peoples.pop()

      return boat
profile
DFF (Development For Fun)

0개의 댓글