H-index는 과학자의 연구 생산성을 나타내는 지표이다. 그 부분을 잘 설명해주는 링크를 첨부한다. H-index 표로 잘 정리되어 있다시피 인용 횟수를 내림차순 정렬한 것과 논문의 갯수 오름차순 정렬한 것을 매칭한뒤 인용수와 논문의 같아지거나 논문의 갯수보다 작아지기 시작하는 변곡점을 H-지수라고 한다.
해설 : 상기한 링크를 참고한 후 나는 생각의 방향을 눈문수를 index를 배열화 한 뒤 그것을 인용수와 비교해서 결과를 출력하려고 하고 있었다. 그러다 모르겠어서 다른 분들것을 참고했다. 나의 문제가 사고가 체계적이지 않다. 이렇게 저렇게 하다가 보면 되겠지... 이런 안일한 생각을 가지고 접근한다. 좀더 체계적이고 치밀하게 접근해야겠다.
function solution(citations) {
let index = 0;
let result = [];
citations.sort((a, b) => b - a);
for (let i = 0; i < citations.length; i++) {
result.push(i + 1);
}
for (let i = 0; i < citations.length - 1; i++) {
if (citations[i] >= result[i]) {
index++;
} else break;
}
return index;
}
꾸역꾸역 이렇게 풀었는데 테스트케이스 9번에서 발목이 잡혔다. 그래서 citations.length - 1 이 부분을 수정하고 위에 쓸모없는 for문을 지우고 수정했다.
function solution(citations) {
let index = 0;
citations.sort((a, b) => b - a);
for (let i = 0; i < citations.length; i++) {
if (citations[i] >= i + 1) {
index++;
} else break;
}
return index;
}
다음부터 while 문을 쓰면 더욱더 간결한 경우가 많던데 while문을 많이 연습해야겠다.