[レベル1]ユニホーム+SWIFT


スポーツウェア


コードテスト練習-スポーツウェア

欲張り


これは未来を考えず、各段階で最適な選択をする技法です.解決策が一番いいとは保証しません.

に答える

  • 人の学生の新しい配列を作った.
  • が失われた場合、インデックスから1が減算されます.
  • 着以上のジャージがあれば、対応するインデックスに1を追加します.
  • 配列から0より大きい値の個数を求める.
  • func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
        var students = Array(repeating: 0, count: n)
        
        for i in lost { students[i - 1] -= 1 }
        for j in reserve { students[j - 1] += 1 }
        
        for (i, v) in students.enumerated() {
            if v == -1 {
                if i > 0 && students[i - 1] == 1 {
                    students[i - 1] -= 1
                    students[i] += 1
                } else if i < n - 1 && students[i + 1] == 1 {
                    students[i + 1] -= 1
                    students[i] += 1
                }
                    
            }
        }
        return students.filter{$0 >= 0}.count
    }

    ハブコミットアドレス


    GitHub-スポーツウェア