새소식

인기 검색어

프로그래머스/Lv.1

[Swift] 실패율

  • -
import Foundation

func solution(_ N:Int, _ stages:[Int]) -> [Int] {
    
    var countArray = Array.init(repeating: 0, count: N) // 각 스테이지 당 같혀 있는 사람들의 수
    var probabilityArray = Array.init(repeating: (Int(0), Double(0.0)), count: N) // 스테이지, 실패율
    var total = stages.count // 각 스테이지를 도전한 사람

    for element in stages {
        guard element != N+1 else { // 모두 통과 했다면 배열에 넣지 않음
            continue
        }
        countArray[element-1] += 1
    }

    for stageNum in 1...N {
        let value = countArray[stageNum-1] // 각 스테이지 클리어하지 못한 사람
        probabilityArray[stageNum-1] =  total == 0 ? (stageNum, 0) : (stageNum, Double(value) / Double(total))
        total -= value

    }
    
    probabilityArray = probabilityArray.sorted(by: { $0.1 == $1.1 ? $1.0 < $1.0 : $0.1 > $1.1 })
    // 실패율이 같다면 스테이지 번호가 작은 순서대로 아니라면 실패율이 큰 순서로 정렬

    return probabilityArray.map{$0.0}
}

 

'프로그래머스 > Lv.1' 카테고리의 다른 글

[Swift] 약수의 합  (0) 2023.02.15
[Swift] 약수의 개수와 덧셈  (0) 2023.02.15
[Swift] 신규 아이디 추천  (0) 2023.02.15
[Swift] 신고 결과 받기  (0) 2023.02.15
[Swift] 시저 암호  (0) 2023.02.15
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.