2019 KAKAO BLIND RECRUITMENT
https://programmers.co.kr/learn/courses/30/lessons/42889
ex)
1탄에 있는 유저는 1명, 2탄의 유저는 3명....
따라서 N의 길이를 가진 배열을 구한다.
1에서 구한 배열을 이용하여 실패율을 나타내는 배열을 구한다, 이 때 index값을 포함한다.
실패율을 기준으로 배열을 내림차순하면, 뒤따라 온 2의 index값이 결과가 된다.
function solution(N, stages) {
let usersNum = stages.length; // 총 유저 수
// 각 스테이지에 머물러 있는 유저 수
let eachStageUser = [];
for(var i=1; i < N+1; i++){
let temp = 0;
stages.forEach(x => {
if(x == i){
temp ++;
}
})
eachStageUser.push(temp);
}
//각 스테이지의 실패율
let fail = [];
eachStageUser.forEach((x, i) => {
fail.push([x/usersNum, i+1])
usersNum = usersNum-x;
})
let result = [];
fail.sort((a,b) => b[0]-a[0]).forEach(x => result.push(x[1]))
return result
}
def solution(N, stages):
users_num = len(stages)
fails = []
for i in range(1, N+1) :
temp = 0
for stage in stages :
if stage == i :
temp += 1
if users_num != 0 :
fails.append( [i, temp/users_num] )
else :
fails.append( [i, 0] )
users_num = users_num - temp
fails = sorted(fails, key= lambda x : x[1], reverse=True)
result = []
for fail in fails :
result.append( fail[0] )
return result