본문 바로가기
[개발] 코딩테스트/프로그래머스

[프로그래머스] 실패율 / Javascript

by hmmmm_ 2022. 5. 3.

[문제 바로가기]

2019 KAKAO BLIND RECRUITMENT  > 실패율

 

[ 문제 파악 ]

완전 탐색 해야하는 문제로 파악했다.

stages는 각 유저가 현재 진행중인 스테이지를 나타내는 배열이고,

전체 스테이지 수 대비 각 유저가 현재 진행하고 있는 스테이지를 통해서 각 스테이지별 실패율을 알아낸다.

 

[ 적용한 풀이 ]

function solution(N, stages) {
    var answer = [];
    let result = '';
    let count = 0;
    
    for(let i = 1; i < N+1; i++){
        result = stages.filter(stage => stage === i).length
        answer.push([i, result/(stages.length - count)])
        count = count + result;
    }
    answer = answer.sort((a,b) => b[1]-a[1]).map(a => a[0])
    return answer;
}

 

[해결 과정 중 실수한 부분 / 잡담]

 

실패율을 배열에 담는데 스테이지 정보를 배열의 인덱스로 뽑아낼 수 있을 것 같다는 생각을 했던거 같다.

sort()함수 내부에는 값의 index를 불러오는 부분이 없어 indexOf 메소드로 부르면 되지 않나 해서 해봤는데,

배열 내에 같은 값이( ex 인덱스 3과 4에 값이 0.5로 2개가 있었음) 있을 경우, 배열 내에서 여러개의 중복 인덱스 중에서 작은 수가 먼저 불려지기 때문에 인덱스4를 불러낼 수가 없더라 ㅠ

그렇다고 map을 또 돌리자니 코드가 지저분 해질 것 같아 포기했다.

 

인덱스 === 스테이지라고 생각해 이걸 활용하고 싶었으나

참고한 방법으로는 객체를 사용(MDN)하거나 이중배열을 사용하는 방법 외에는

다른 방법은 딱히 없어보인다.

인덱스 === 스테이지라고 생각했으나 인덱스 == 스테이지일뿐...

(혼자만 최대한 적은 리소스 사용하기 도전중)

 

테스트 통과후 '다른 사람들의 풀이' 부분도 참고 해봤는데, 아무래도 둘을 분리해서 생각하는게 풀이가 깔끔하게 나온다.

댓글