728x90
반응형
2021.05.29
문제명 : 2019 KAKAO BLIND RECRUITMENT - 실패율
사용언어 : Javascript
개발 시간 : 90분
📋 문제 설명
실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
📢 입출력 예
예시 1을 보면, 최종단계(N)는 5단계이고, stages배열 [2, 1, 2, 6, 2, 4, 3, 3]입니다.
stages배열의 각각은 개개인이 현재 위치해있는 단계를 의미합니다.
따라서 stages 배열의 크기만큼 인원(8명)이 있고,
- 1단계에 머무르고 있는 사람은 [2, 1, 2, 6, 2, 4, 3, 3] 한 명이므로 1단계 실패율 : 1/8 (=0.125)
- 2단계에 머무르고 있는 사람은 2단계 이상 올라온 사람 중 [2, 2, 6, 2, 4, 3, 3] 세명이므로 2단계 실패율 : 3/7 (=0.42)
- 3단계에 머무르고 있는 사람은 3단계 이상 올라온 사람 중 [6, 4, 3, 3] 세명이므로 3단계 실패율 : 2/4 (=0.5)
이런식으로 반복되면 실패율이 높은(큰) 단계는 3단계(0.5)→4단계(0.5)→2단계(0.42)→1단계(0.125)→5단계(0) 순입니다.
따라서 정답은 [3,4,2,1,5]입니다.
🔑 문제 풀이
function solution(N, stages) {
var answer = [];
var fail_arr = [];
var total = stages.length;
for(var i=1; i<=N; i++){
var cnt = 0;
for(var j=0; j<stages.length; j++){
if(i == stages[j]){
cnt++;
}
}
// 실패율(per)순으로 정렬시키기 위해 json형태로 push
fail_arr.push({per:cnt/total, idx:i});
total -= cnt;
}
fail_arr.sort(function(a, b) { return b["per"] - a["per"]; });
for(var i=0; i<fail_arr.length; i++){
answer.push(fail_arr[i].idx);
}
return answer;
}
🔔 새로 알게 된 점
16번 라인 : fail_arr.push({per:cnt/total, idx:i});
딕셔너리로 관리할 수 있다.
728x90
반응형
'Programmers > Javascript' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 javascript (0) | 2021.07.14 |
---|---|
[프로그래머스] 키패드 누르기 javascript (0) | 2021.06.26 |
[프로그래머스] 폰켓몬 javascript (0) | 2021.06.13 |
[프로그래머스] 크레인 인형뽑기 게임 javascript (0) | 2021.06.03 |
[프로그래머스] 예산 javascript (0) | 2021.05.30 |