[プログラマ]機能の開発


質問する



アイデア


  • 機能開発を完了するのに必要な日数を格納するリスト(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変数の設定を考えてみましょう