[프로그래머스 level1] 실패율_2019 카카오 기출

김예지·2021년 10월 16일
1

문제

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


문제 풀이

function solution(N, stages) {
    let answer=[];
    let arr=Array.from({length:N+1}, ()=>0);
    let map=new Map();
    for(let i=1; i<=N; i++){
        let under=0, top=0;
        for(let j=0; j<stages.length; j++){
            if(stages[j]>=i) under++;
            if(stages[j]===i) top++;
        }
        map.set(i, top/under);
    }
    map=[...map].sort((a, b)=>b[1]-a[1]);
    for(let x of map){
        answer.push(x[0]);
    }
    return answer;
}
  • 인덱스를 어떻게 저장할까 고민을 꽤 오래했다.
    해시맵에서 key에 인덱스를 저장하고 value에 실패율을 넣었다.
    해시맵(객체)에서 정렬하는 방법이 있어서 참고하여 작성했다.
    객체도 key나, value를 기준으로 정렬할 수 있다는것을 기억하자!
    단, sort는 array의 메소드이기 때문에 객체를 배열의 형태로 만든 후 sort 메소드를 실행해야한다. 아니면 오류뜬다!
    위 문제에서는 map객체를 전개연산자를 통해 배열로 만든 뒤 sort를 다음과 같이 사용했다[...map].sort((a, b)=>b[1]-a[1]); .
    메소드를 쓸때는, 어디에서 쓸 수 있는지를 확인한 후 제대로 써야한다❗️
  • 이 문제에서는 sort를 통해 내림차순(큰수에서 작은수) 실패율이 같은 경우에는 작은수가 먼저 와야한다. 만약 key 3, 4가 같은 실패율이라면 sort에서는 둘의 자리를 바꾸지 않기 때문에 그대로 3, 4로 정렬된다. 따라서 문제의 조건을 만족할 수 있다.
  • 정답률 55%! 야호 맞춰서 내가 대견
  • 카카오 해설은 여기서!
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 26일

10/26

답글 달기