💬 문제
[코딩테스트 연습 - 실패율](https://school.programmers.co.kr/learn/courses/30/lessons/42889)
💬 Idea
- 스테이지 개수만큼 stageDict를 초기화해준다.
- stage에 머무른 사용자의 수를 stageDict에 기록한다.
- stage의 개수보다 큰 stage에 머무른 사용자는 filter를 통해 제거하고, 실패율을 계산한다.
- 이 때 총 사용자의 수에서 낮은 stage부터 실패한 사용자가 누적으로 제거되어 실패율이 계산된다.
- 즉 stage3에서 계산되는 실패율의 기준 사용자는
기준 사용자 = 총 사용자의 수 - stage1,2에서 머무른 사용자의 수 이다.
- 이렇게 실패율을 구하고, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return한다.
💬 풀이
func solution(_ N:Int, _ stages:[Int])->[Int]{varstageDict:[Int:Int]=[:]foriin1...N {stageDict[i]=0}foriin stages {stageDict[i]=stageDict[i]!=nil?stageDict[i]! +1:1}varstageCount= stages.count
varfailureDict:[Int:Double]=[:]foriin stageDict.keys.filter({ $0 <= N }).sorted(){failureDict[i]=Double(stageDict[i]!)/Double(stageCount)
stageCount -=stageDict[i]!
}varsortedDict= failureDict.sorted{ $0.key < $1.key }
sortedDict = sortedDict.sorted{ $0.value > $1.value }return sortedDict.map{ $0.key }}💬 알게된 문법
⭐️ 나누기 할 때 소수점 이하의 숫자가 필요한 경우
Double(num1)/Double(num2)
💬 문제[코딩테스트 연습 - 실패율](https://school.programmers.co.kr/learn/courses/30/lessons/42889)
💬 Idea기준 사용자=총 사용자의 수-stage1,2에서 머무른 사용자의 수이다.💬 풀이💬 알게된 문법⭐️ 나누기 할 때 소수점 이하의 숫자가 필요한 경우