[プログラマーLV 2]救命ボート




方法


最小の体重と最大の体重を一緒にボートに置いてこそ、最小のボートを使うことができます.

に答える


まず、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