[プログラマ]機能の開発
1609 ワード
質問する
アイデア
機能開発を完了するのに必要な日数を格納するリスト(dayscnt)を作成すべきだと思います.
問題では、優先度が後の機能を先に開発しても、優先度が前の機能を先に開発してから、優先度が前の機能と一緒に配置するので、「自分の日数よりも大きな機能が出る前に、わずかな日数の機能だけでいい」という結論に至りました.
厄介な部分は、数え終わったら、すでに数量に含まれている機能をスキップすることです.熟考した上で,EndPointという変数に含まれる機能のインデックスを加えた.その後、最初のforクエリiでendPointが既に存在し、endPointのインデックスが通過していない場合はcontinueでスキップする.
各for文では,最後に適当であれば個数を入れることはできず,文を通過すれば最後のインデックス時の個数を入れることもできる.
正解を解く
def solution(progresses, speeds):
answer = []
daysCnt = []
for i in range(len(progresses)):
left = 100-progresses[i]
cnt = 0
if left % speeds[i]:
cnt = left // speeds[i] + 1
else:
cnt = left // speeds[i]
daysCnt.append(cnt)
endPoint = 0
for i in range(len(daysCnt)):
if endPoint and i <= endPoint:
continue
tmp = 1
# daysCnt
if i == len(daysCnt)-1:
answer.append(tmp)
for j in range(i+1,len(daysCnt)):
if daysCnt[i] < daysCnt[j]:
answer.append(tmp)
break
else:
tmp += 1
endPoint = j
if j == len(daysCnt)-1:
answer.append(tmp)
return answer
すでに含まれている数をなんとか超えるのには想像以上に時間がかかります.次に似たような方法を使うならend-point変数の設定を考えてみましょうReference
この問題について([プログラマ]機能の開発), 我々は、より多くの情報をここで見つけました https://velog.io/@ffalswo2/프로그래머스-기능-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol