[문제 링크]
각 논문의 인용 횟수를 담은 citations
h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용된 h의 최댓값인 h-index를 반환
/**
* @param {number[]} citations
* @return {number}
*/
var hIndex = function(citations) {
let h_idx = 0;
citations.sort((a, b) => b - a);
for (let i = 0; i < citations.length; i++) {
if (citations[i] < i + 1)
break;
h_idx++;
}
return h_idx;
};
인용 횟수 배열을 내림차순으로 정렬하여 앞에서부터 해당 인덱스 번호보다 값이 크다면 h-index를 증가시킨 뒤 넘어가고,
그렇지 않은 논문을 만났을 때 멈추고 지금까지 증가시킨 h-index 반환
Accepted
Runtime 65ms (Beats 16.85%)
Memory 49.54MB (Beats 22.74%)
이게 뭐라고 한 시간이 넘게 걸렸다. 분명 h-index 문제를 저번에 풀어봤던 것 같은데 그새 또 까먹는게 정말 신기하다. 일단 h-index에 대해 이해하느라 30분이 지나고, 잘못된 알고리즘으로 구현해놓고 테스트 케이스에 맞춰서 누더기 만들다가 다시 다 지우고, 프로그래머스에 풀어봤던 코드가 있길래 보는데 파이썬이라서 왜 이렇게 짰는지 이해가 잘 안가고... 하여튼 혼자 힘으로 열심히 풀어보려다가 또 찾아보게 되었는데 이렇게 간단하게 구현할 수 있다는 점에 뒤통수가 얼얼했다. 혼자서 붙잡고 풀어보려는 의지도 중요하지만 역시 이런게 동료 학습인건가 한번 더 놀라게 되는 풀이 시간이었다.