[프로그래머스] 코딩테스트 연습 - 9

krkorklo·2022년 1월 26일
0

프로그래머스

목록 보기
9/78

level 1 - 실패율

전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라. 실패율은 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수로 정의한다

입출력 예시
N : 5
stages : [2, 1, 2, 6, 2, 4, 3, 3]
-> [3,4,2,1,5]

function solution(N, stages) {
    var answer = new Array(N).fill().map((x, i) => i + 1);
    var fail = [];
    var total = stages.length;
    for (var i=1; i<=N; i++) {
        var stop = stages.filter(s => s == i).length;
        fail.push(stop / total);
        total -= stop;
    }
    
    for (var i=1; i<N; i++) {
        for (var j=0; j<N - i; j++) {
            if (fail[j] < fail[j+1]) {
                var tmp = fail[j];
                fail[j] = fail[j+1];
                fail[j+1] = tmp;
                tmp = answer[j];
                answer[j] = answer[j+1];
                answer[j+1] = tmp;
            }
        }
    }
    
    return answer;
}

코드가
많이

...
마음에 안든다

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


내가
하고싶던게

이거였는데
...😢

push를 그냥 값으로만 가능하다고 혼자 생각함
그리고 sort 함수를 제대로 응용도 못함

근데

그럴수도 있지

앞으로 화이팅~

0개의 댓글