728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/42889?language=javascript 

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

 

코드


function solution(N, stages) {
    let answer = [];
    let tmp = [];
    let b = stages.length; //n번째 스테이지에 도달한 사람

    stages.sort((a,b) => (a-b)); //stages배열 오름차순 정렬

    for (let i=1; i<N+1; i++) { //stage는 1부터 시작이니 i=1부터
        let a = stages.reduce((count, element) => count + (i === element), 0); //n번째 스테이지에 도달했지만 성공하지 못한 사람
        tmp.push([i, failure(a,b)]); //실패율 구하고 tmp에 각 스테이지와 실패율 push
        b = b-a; //배열 전체 길이에서 n번째 스테이지에 도달만 한 사람들 빼주기
    }
    
    tmp.sort((a, b) => b[1]-a[1]); //실패율 내림차순에 따라 배열 정렬
    for (let i=0; i<tmp.length; i++) { //내림차순 정렬된 tmp의 스테이지를 answer에 push
        answer.push(tmp[i][0]);
    }
    
    function failure(a,b) { //실패율 함수
        return a/b;
    }
    return answer;
}

 

후기


  • 배열을 잘 이용하면 쉽게 풀 수 있는 문제였다
  • 로직을 어떻게 짜냐에 따라 다양한 코드가 나오는 것을 알 수 있는 문제였다
  • 내 풀이에서 길이를 좀 줄이려면 굳이 함수를 안 만들어도 됐을 것 같다

+ Recent posts