Programmers.失敗率
問題の説明
失敗率は次のように定義されます.
ゲームを使用するユーザが、現在停止しているステージ番号を含む配列フェーズをパラメータとして取得する場合.
解関数を完了し、失敗率の高いステージからステージ番号を含む配列を降順に返します.
問題を解く
私の答え
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var failure: [Int: Float] = [:]
var player: Int = stages.count
for i in 1...N {
let n = stages.filter { $0 == i }.count
failure[i] = Float(n)/Float(player)
player -= n
}
return failure.sorted(by: <).sorted(by: { $0.value > $1.value }).map {$0.key}
}
テスト5、テスト9、テスト22にタイムアウトが発生しました.import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var failStage: [Int: Int] = [:]
for stage in stages {
if !failStage.isEmpty && failStage.keys.contains(stage) {
failStage[stage]! += 1
continue
}
failStage[stage] = 1
}
var result: [(stage: Int, value: Double)] = []
var successPeople: Int = stages.count
for stage in 1...N {
if !failStage.keys.contains(stage) {
result.append((stage, 0))
continue
}
result.append((stage, Double(failStage[stage]!) / Double(successPeople)))
successPeople -= failStage[stage]!
}
result.sort { return $0.value == $1.value ? $0.stage < $1.stage : $0.value > $1.value }
return result.map { $0.stage }
}
正常完了スコア辛いところ
時間の複雑さを考慮せずに問題を解決する.
高次関数がスロー関数であることを知らなかったためタイムアウトが発生した.
最終的にネット上で他の人のブログを閲覧して、間違いの原因を見つけて、彼らのコードを見て、勉強しながら、コードを書き直しました.
问题的短片
Reference
この問題について(Programmers.失敗率), 我々は、より多くの情報をここで見つけました https://velog.io/@junstone1995/Programmers.실패율テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol