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


▼▼▼問題説明
プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
▼▼▼制限
  • タスクの数(進捗、速度配列長)は100を超えません.
  • 作業の進捗は100の自然数を下回っています.
  • の動作速度は100以下の自然数である.
  • 導入では、1日に1回しか導入できないと仮定し、1日の終了時に導入します.
    たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します.
  • 🎈 I/O例

    👩‍💻 マイコード
    def solution(progresses, speeds):
        
        days = [] # 작업 완료 기간을 담는 리스트
        
        for i in range(len(progresses)):
            if ((100-progresses[i]) % speeds[i]) == 0:
                days.append(int((100-progresses[i]) / speeds[i]))
            else:
                days.append(int((100-progresses[i]) / speeds[i] + 1))
        
        result = [] # 결과를 담는 리스트
        count = 1 # 서비스에 반영할 수 있는 기능 갯수
        for i in range(len(days)-1):
            if days[i] < days[i+1]:
                result.append(count)
                count = 1
            else:
                count += 1
        result.append(count)
    
        return result
    まず,コードの記述方法を考えた結果,以下のようになった.
  • 各機能の完了時間
  • を取得する.
  • (100進捗[i])%速度[i]=0の場合、
    (100-progress[i])/速度[i]の値は稼働時間です.
  • (100-progress[i])%速度[i]>0の場合、
    (100-progress[i])/速度[i]+1の値は、動作時間です.
  • リストの前後インデックスの値が自身より小さい場合count+=1;
    自分より値が大きい場合は、結果に入れます.
  • 結果が大きく出てきました.🥲

    なぜかよく考えてみると、私は本当に愚かだと気づいた.
    後ろのインデックスだけを比較してresultに置くとエラーが発生しました...ハハハ
    修正後のコード
    def solution(progresses, speeds):
        
        days = []
        
        for i in range(len(progresses)):
            if ((100-progresses[i]) % speeds[i]) == 0:
                days.append(int((100-progresses[i]) / speeds[i]))
            else:
                days.append(int((100-progresses[i]) / speeds[i] + 1))
        
        result = []
        count = 1
        
        for i in range(len(days)-1):
            if days[i] != -1:
                for j in range(i+1, len(days)):
                    if days[i] < days[j]:
                        result.append(count)
                        count = 1
                        break
                    else:
                        count += 1
                        days[j] = -1
            else:
                continue
        result.append(count)
        print(days)
        return result
    1つのインデックスのみを比較するのではなく、後のすべてのインデックスを比較するために、2つのfor文が作成されました.次にcountの要素を-1に変更し、比較した場合は次のインデックスに移動するように記述します.

    成功˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง(ว˙∇˙)ง
    アルゴリズムが弱いせいか、これは易しい問題だと分かっていても、なかなか解けない.もっと勉强しなきゃ!