きのうかいはつ


リンクテキスト

問題を理解する


プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
progresses speeds return
[93, 30, 55][1, 30, 5] [2, 1][95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1][1, 3, 2]

私の理解


この問題自体は理解しにくいわけではない.これは数日しか計算されていない問題で、悪魔は細部に隠されています.

Python

from collections import deque
import copy
import math
def solution(progresses, speeds):
    res =[(math.ceil((100- progress)/speed))  for progress, speed in zip(progresses, speeds)]
    print(res)
    que1 = deque(res)
    ans =[]
    print(res)
    while copy.deepcopy(que1):
        current = que1.popleft()
        count =1
        print(current)
        for q in copy.deepcopy(que1):
            print(q)
            if current >= q:
                count +=1
                que1.popleft()   
            else:
                break
        
        ans.append(count)
    
    return ans
問題自体は難しくないが、実施段階で多くの誤りが発生した.大きく2種類あります.
1. deque mutation
2. math.ceil
2479172プロセスカウント数、対応するすべてをクリアする必要がありますが、問題は、文を実行するときに読み込めないことです.だからcopydeepcopy()を使用すると、私がやりたかったようにアクセスできます.
関連リンクを参照
  • これは転試験用例ですが、ずっと2番にエラーが発生していて、問題掲示板を見ていたときに見つかりました.[5,5][21,25,20]そういう場合は答えは[3]しかし、私が使っていた計算式は小数点で大きさを比較していたので、3.8と3.2は認識が違いました.しかし、問題を正しく理解すれば、2人とも4日間で計算しなければならない.だからmathceil関数を使用すると、両方とも4日間計算できます.