오늘의 코딩 테스트 한줄 - 실패율

Edwin·2023년 6월 5일
0
post-thumbnail

2019 KAKAO BLIND RECRUITMENT

실패율
슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다.

이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.

  • 이제 이런 문제는 쉬운 것 같다.
  • 문제풀이 : 30분
  • 메모리: 33.5 MB, 시간: 0.09 ms
function solution(N, stages) {
    var answer = [];
    for(let i=1; i <= N; i++) {
        let num = stages.filter(el => el === i).length;        
        let stage = stages.filter(el => el >= i).length;
        answer.push([i, num/stage]);
    }
    answer.sort((a,b) => b[1]-a[1]);
    return answer.map(el => el[0]);
}

문제풀이 과정

  • N : 스테이지 개수
  • stages : 사용자가 현재 멈춰있는 스테이지의 번호
  • result : 실패율이 높은 스테이지부터 내림차순으로

01 for문을 통해서 answer 배열에 내용을 추가해 준다.
02 변수 num 은 i번째에 해당되는 요소를 담는다.
03 변수 stage 은 i번째에 해당되는 요소를 포함한 요소를 담는다.
04 answer에 해당 i와 실패율을 담는다.
05 answer를 실패율의 내림차순으로 정렬한다.
06 answer의 요소의 [0]만 출력한다.

profile
신학전공자의 개발자 도전기!!

0개의 댓글