본문 바로가기

알고리즘

2019 KAKAO BLIND RECRUITMENT > 실패율

728x90

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

 

function solution(N, stages) {
  stages.sort((a, b) => a - b);
  let map=new Map()
  for(let i=0;i<stages.length;i++){
    if(!map.get(stages[i])){
      map.set(stages[i],1)
    }else{
      map.set(stages[i],map.get(stages[i])+1)
    }
  }
  


  for(let i=1;i<=N;i++){
    if(!map.get(i)){
      map.set(i,0)
    }
  }

  let newArr=[...map]
  newArr.sort((a,b)=>a[0]-b[0])
  let answer=[]
  for(let i=0;i<N;i++){
    answer.push([i+1,0])
  }
 
  for(let i=0;i<answer.length;i++){
   if(!newArr[i])continue
   let volunteer=newArr.slice().splice(i,newArr.length).reduce((a,b)=>a+b[1],0)
   let failTrialOfIdx=newArr[i][0]-1===i?newArr[i][1]:0
    answer[i]=[i+1,failTrialOfIdx/volunteer]
  }

  answer=answer.sort((a,b)=>b[1]-a[1]).map((item)=>item[0])
  return answer
  
}
728x90