프로그래머스

프로그래머스_H-index

o늘do 2020. 5. 7. 16:24

자바스크립트 정렬만 할 줄 알면 쉽게 풀수 있는 문제이다.

 //오름 차순정렬
 numbers.sort((a, b)=> {
        return a-b;
    });
 // 내림 차순 정렬
 
     numbers.sort((a, b)=> {
        return b-a;
    });

h-index 값을 0으로 두고 정렬된 배열 뒷부분부터 순회하면서 배열의 값이 h-index 값보다 크면 h-index 값을 1증가시키고 그이외에 경우에는 값을 그대로 두면 된다. 

예를 들어 

 1 1 2 4 5 같은 경우(h-index = 0)

step1 : 1 1 2 4 5

                  5 > 0(h-index) 1(h-index++)

step2 : 1 1 2 4 5

                  4 > 1(h-index) 2(h-index++)

step3 : 1 1 2 4 5

               2 > 2(h-index) 2(h-index)

               이후스텝은 정렬된 배열이기때문에 검사할 필요가없음

step4 : 1 1 2 4 5

step5 : 1 1 2 4 5

 

function solution(numbers) {
    var answer = 0;
    numbers.sort((a, b)=> {
        return a-b;
    });

    for(let i = numbers.length - 1; i >= 0; i--){
        if(answer < numbers[i]){
            answer++;
        }
    }

    return answer ;
}