문제 링크 (opens new window)

# 풀이

  1. 고차함수 자제하기
import Foundation

func solution(_ N:Int, _ stages:[Int]) -> [Int] {
    // stages -> 사용자 정보
    // 스테이지 순회하며 해당 스테이지에 몇명 있는지 딕셔너리로 파악
    var failureRatio: [(Int, Double)] = []
    var players = stages.count
    var result: [Int] = []

    for i in 1..<N+1 {
        var current = 0
        for j in 0..<stages.count {
            if stages[j] == i {
                current += 1
            }
        }

        players -= current
        failureRatio.append((i, Double(current) / Double(players)))
    }

    var sorted = failureRatio.sorted {
        if $0.1 == $1.1 {
            return $0.0 < $1.0
        } else {
            return $0.1 > $1.1
        }
    }

    for (stage, ratio) in sorted {
        result.append(stage)
    }

    return result
}