공대생의 비망록

[프로그래머스][Lv. 1] 실패율 Swift 풀이 본문

Programming Language/Swift

[프로그래머스][Lv. 1] 실패율 Swift 풀이

myungsup1250 2022. 4. 2. 01:25

https://programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

풀이는 추후에 차차 올리도록 하겠습니다...

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import Foundation
 
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
    var userCount: Int = stages.count
    var stageCounts: [Int:Int= [Int:Int]()
    for n in 1...N {
        stageCounts.updateValue(0, forKey: n)
    }
    for stage in stages {
        if stage == N + 1 {
            continue
        }
        stageCounts[stage] = stageCounts[stage]! + 1
    }
    var stageFailrates: [Int:Double] = [Int:Double]()
    for stage in 1...N {
        let stageCount = stageCounts[stage]!
        if userCount != 0 {
            stageFailrates[stage] = Double(stageCount) / Double(userCount)
            userCount -= stageCount            
        } else {
            stageFailrates[stage] = 0
        }
    }
    var answer: [Int= [Int]()
    let sortedStageFailrates = stageFailrates.sorted { 
        if $0.1 > $1.1 {
            return true
        } else if $0.1 == $1.1 {
            return $0.0 < $1.0
        } else {
            return false
        }
    }
    for i in 0..<sortedStageFailrates.count {
        answer.append(sortedStageFailrates[i].key)
    }
    return answer
}
cs
Comments