[JavaScript][Programmers] 실패율

조준형·2021년 8월 14일
0

Algorithm

목록 보기
72/142
post-thumbnail

🔎 실패율

❓ 문제링크

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

📄 제출 코드

// 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
function solution(N, stages) {
    let answer = [];
    let arr = [];
    let len = stages.length;
    for (let i = 1; i <= N; i++) {
        let stageNum = stages.filter(el => el == i).length;
        let fail = 0;
        stageNum == 0 ? fail = 0 : fail = stageNum / len;
        len -= stageNum;
        arr.push({ i,fail});
    }
    // console.log(`before : ${JSON.stringify(arr)}`);
    arr.sort((a, b) => {
        return b.fail-a.fail
    })
    // console.log(arr);
    answer = arr.map(el => el.i);
    return answer;
}
let N = 5;
let stages = [2, 1, 2, 6, 2, 4, 3, 3];
console.log(solution(N, stages));

처음에 문제를 잘못 이해해서 해맷었다. 다 구현하고나서 답이 이상하길레 ??? 하다가 다시 다지우고 처음부터 다시 천천히 작성했다.(ㅜㅜ)
먼저 해당 스테이지에 머물러 있는 사람의 수를 filter를 이용하여 구하고,
없으면 fail=0, 아니라면 실패율을 계산한다.
그리고 전체 길이에서 해당 스테이지에 머물러있는 사람들수를 빼주고,
arr에다가 스테이지와 실패율을 저장해준다.

그 다음 문제에서 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라고 하였다.
arr을 실패율이 큰거부터 정렬해준다.

그 후 answer에 map을 이용하여 key값(스테이지)을 순서대로 넣어준다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글