Programmers人工知能Defcos-Week 1 Day 4
1190 ワード
[1週目-Day 4]
4日目は、Heap、DP、DFS/BFSを復習しました.
1週間目なので今は理性的な内容で
辛いのが好きなLeoは全ての食べ物のScobile指数をK以上にしたいすべての食べ物のScobile指数がK以上になるように、LeoはScobile指数が最も低い2つの食べ物を以下のような特殊な方法で混合し、新しい食べ物を作った.
Leoが持つ食べ物のスコヴェル指数とScoville指数がKに達したとき、すべての食べ物のスコヴェル指数をK以上に混合する最小回数を返す解関数を作成してください.
スコビルの長さは1以上1000000以下です.
Kは0より大きく、10000000より小さい.
scovilleの各要素は0または10万以下です.
すべての食べ物のスコビル指数をKより大きくすることができない場合は、−1を返す.
4日目は、Heap、DP、DFS/BFSを復習しました.
1週間目なので今は理性的な内容で
Programmersの方が辛いです
問題の説明
辛いのが好きなLeoは全ての食べ物のScobile指数をK以上にしたいすべての食べ物のScobile指数がK以上になるように、LeoはScobile指数が最も低い2つの食べ物を以下のような特殊な方法で混合し、新しい食べ物を作った.
섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
Leoは、すべての食べ物のスコビル指数がK以上になるまでかき混ぜます.Leoが持つ食べ物のスコヴェル指数とScoville指数がKに達したとき、すべての食べ物のスコヴェル指数をK以上に混合する最小回数を返す解関数を作成してください.
せいげんじょうけん
スコビルの長さは1以上1000000以下です.
Kは0より大きく、10000000より小さい.
scovilleの各要素は0または10万以下です.
すべての食べ物のスコビル指数をKより大きくすることができない場合は、−1を返す.
Solutions
def solution(scoville, K):
import heapq
answer = 0
heapq.heapify(scoville)
while True:
min1 = heapq.heappop(scoville)
if min1 >= K:
break
elif len(scoville) == 0:
answer = -1
break
min2 = heapq.heappop(scoville)
heapq.heappush(scoville, min1 + 2*min2)
answer += 1
return answer
これはとても完璧な解題方法です.Reference
この問題について(Programmers人工知能Defcos-Week 1 Day 4), 我々は、より多くの情報をここで見つけました https://velog.io/@donchanee/Programmers-인공지능-데브코스-Day-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol