[プログラマー]救命ボート
📩 -->問題の説明
無人島に閉じ込められている人を救命ボートで救い出したい.救命ボートは小さく、1回に最大2人しか乗れず、重量制限もあります.
例えば、人々の体重が[70 kg、50 kg、80 kg、50 kg]であり、救命ボートの重量制限が100 kgであれば、2人目と4人目は一緒に乗ることができるが、1人目と3人目の重量の和が150 kgであるため、救命ボートの重量制限を超えて一緒に乗ることはできない.
できるだけ救命ボートで全員を助けないようにしたい.
特定の人の体重の配列と救命ボートの重量制限をパラメータとして使用する場合は、すべての人を救うために必要な救命ボートの数の最大値を返す解関数を作成します.
せいげんじょうけん
I/O例
peoplelimitreturn[70, 50, 80, 50]1003[70, 80, 50]1003
💡 ソリューション(使用言語:python)
def solution(people, limit):
end=len(people)-1
one=[]
two=[]
people.sort()
for i in range(len(people)):
while True:
if people[i]+ people[end]>limit:
one.append(people[end])
end-=1
else:
# two.append([i,end,people[i],people[end]])
two.append(sorted([i,end]))
end-=1
break
if end==0:
break
two=list(map(tuple, two))
return len(set(two))+len(one)
👉 説明:
💡 補足ソリューション
def solution(people, limit):
people.sort()
answer=0
start=0
end=len(people)-1
while start < end:
if people[start]+people[end] > limit:
end-=1
else:
start+=1
end-=1
answer+=1
if start==end:
answer+=1
return answer
別の解釈
def solution(people, limit) :
answer = 0
people.sort()
a = 0
b = len(people) - 1
while a < b :
if people[b] + people[a] <= limit :
a += 1
answer += 1
b -= 1
return len(people) - answer
🌈 に感銘を与える
頑固ではなく、だめだと思ったら、他のコードを書く習慣を身につけなければなりません.もったいないと思わないで!
ソース:プログラマ
間違いがあればメッセージをお願いします🙂
Reference
この問題について([プログラマー]救命ボート), 我々は、より多くの情報をここで見つけました https://velog.io/@letgodchan0/프로그래머스-구명보트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol