시간초과 문제
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
let failedList: [Int] = Array(1...N).map { index in
stages.filter { $0 == index }.count
}
let challengedList: [Int] = Array(1...N).map { index in
stages.filter { $0 >= index }.count
}
var list: [(Int,Double)] = Array(1...N).map { index in
let failed = failedList[index-1]
let challenged = challengedList[index-1]
let failedRate = Double(Double(failed) / Double(challenged))
return (index, failedRate)
}
list.sort(by: { $0.1 > $1.1 })
return list.map { $0.0 }
}
시간초과 해결문제
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var failedList: [Int] = .init(repeating: 0, count: N + 1)
for stage in stages {
if stage <= N {
failedList[stage] += 1
}
}
var challengedList: [Int] = .init(repeating: 0, count: N + 1)
var players = stages.count
for i in 1...N {
challengedList[i] = players
players -= failedList[i]
}
var list: [(Int,Double)] = Array(1...N).map { index in
let failed = failedList[index]
let challenged = challengedList[index]
let failedRate = Double(Double(failed) / Double(challenged))
return (index, failedRate)
}
list.sort(by: { $0.1 > $1.1 })
return list.map { $0.0 }
}