開発プログラマSWIFT機能



問題の説明


プログラマチームは機能強化を実行しています.各機能は、進捗が100%の場合にサービスに反映されます.
また、各機能の開発速度が異なるため、後の機能は前の機能の開発より先に、後の機能は前の機能の導入時に一緒に導入される可能性があります.
まず、ソリューション関数を完了し、特定の整数配列の進捗状況(必要に応じて配置される順序)と整数配列速度(タスクごとの開発速度)のときに、各配置にどれだけの機能があるかを返します.
せいげんじょうけん
  • タスクの数(進捗、速度配列長)は100を超えません.
  • 作業の進捗は100の自然数を下回っています.
  • の動作速度は100以下の自然数である.
  • 導入では、1日に1回しか導入できないと仮定し、1日の終了時に導入します.たとえば、開発の進捗状況が95%のタスクの速度が1日4%の場合、導入は2日後に完了します.
  • I/O例
    progressesspeedsreturn[93, 30, 55][1, 30, 5][2, 1][95, 90, 99, 99, 80, 99][1, 1, 1, 1, 1, 1][1, 3, 2]
    I/O例説明
    I/O例#1
    最初の機能は93%、毎日1%の作業を完了し、7日以内に導入を完了できます.
    2つ目の機能は30%を達成し、毎日30%の作業を完了できるため、3日間で導入を完了できます.ただし、前の機能はまだ完了していないため、最初の機能は導入の7日目に導入されます.
    3つ目の機能は55%を達成し、1日5%の作業を完了できるため、9日以内に導入を完了できます.
    これにより、7日目に2つの機能が導入され、9日目に1つの機能が導入されます.
    I/O例#2
    すべての機能は1日1%のタスクしか達成できないため、タスクが終了するまでの残りの日数はそれぞれ5日、10日、1日、1日、20日、1日です.前のすべての機能が完了していない場合は、機能を導入できません.
    これにより、5日目に1つの機能、10日目に3つの機能、20日目に2つの機能が導入されます.

    問題を解く

  • の問題を理解すると、最初の導入時に誤って計算が行われました.導入する前のプロセスは完了する必要がありましたが、最初は完了しませんでした.
  • は、最初にプロセスに導入されたときにパージされ、文の条件がプロセスがない場合に終了するように設定されています.
  • プロセスが100%を超える場合、カウンタによって値が入力されます.ここでも一日が終わってから支給される条件は見られず、結果が違って苦労しました.
  • カウンタを0に初期化することで、デプロイ後に割り当てることができます.
  • ソースコード

    import Foundation
    
    let progresses = [95, 90, 99, 99, 80, 99]
    let speeds = [1, 1, 1, 1, 1, 1]
    
    func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
        var prog = progresses
        var spd = speeds
        var number:Array<Int> = []
        var count = 0
        
        while prog.isEmpty == false{
            for i in 0 ..< prog.count{
                prog[i] += spd[i]
            }
            if prog.first! >= 100{
                while (prog.first! >= 100) {
                    count += 1
                    prog.removeFirst()
                    spd.removeFirst()
                    
                    if prog.isEmpty == true{
                        break
                    }
                }
                number.append(count)
                count = 0
            }
            
        }
        return number
    }
    
    solution(progresses, speeds)