function solution(citations) {
var answer = 0;
citations.sort((a, b) => {
return b - a;
});
for (let H_index = citations.length; H_index >= 0; H_index--) {
if (citations[H_index - 1] >= H_index) {
answer = H_index;
break;
}
}
return answer;
}
전체로직설명 : 우선 출간한 논문들의 인용횟수가 배열에 담겨서 들어온다.
배열을 역으로 소팅한다. ( 내림차순 )
배열의 방 갯수가 최대 H-index
값이므로 최대 H-index
부터 하나씩 값을 줄이며 만족하는 지 체크한다.
H-index의 조건은 어떤수 n 이상의 방이 n개 이상있고, 나머지는 모두 n이하이면 (이 조건을 만족하는 수중 최댓값이라는 가정하에) H-index는 n이다..
ex) [5,5,5,5,5] => 5
ex) [5,5,5,5,4] => 4
ex) [3,0,6,1,5] => 3
while(i + 1 <= citations[i]){
i++;
}
나와 같은 로직의 코드를 다음과 같이 줄일 수 있다.
citations
는 역소팅 되어있는 상황이고 i
값을 늘리면서 체크
...