문제
내 풀이
function solution(citations) {
var answer = 0;
citations.sort((a, b) => b - a);
for (let i = 0; i < citations.length; i++) {
if (citations[i] >= i + 1) answer++;
else break;
}
return answer;
}
문제가 이해가 제법 어려웠다. 문제 이해하다가 잠시 놓치면 뇌가 살짝 꼬이는 기분이였다. 2학년 때 자료구조 시간에 코테 볼 때도 이 문제 있었는데 그때도 제대로 이해 못했음..ㅎ
문제만 읽었을 때는 citations의 특정 값이 H-Index인줄 알았다. 근데 계속 틀리길래 검색해보니 논문 갯수의 최대 값을 구하는 거였다.
- 먼저, 논문(citations)을 내림차순으로 정렬한다.
- 논문의 수(i)를 하나씩 늘려가면서, 논문의 수(i)가 인용된 수(citations[i])와 같거나 작아지는 시점에서 멈춘다. 그리고 그때 카운팅한 논문의 수가 H-Index 값이다.
다시 말해, 인용된 수(citations[i])를 하나하나 확인해보고, 그 횟수보다 더 많이 인용된 논문들의 갯수의 최대값을 구하면 된다.