https://school.programmers.co.kr/learn/courses/30/lessons/42747
과학자의 생산성과 영향력을 나타내는 지표로 H-Index라는 것을 사용한다고 한다.
학부 졸업도 논문 대신 졸업 작품이었고, 당연히 논문을 쓸 만한 적극적인 연구 활동을 해 본 적도 없으니,
꽤 생소한 개념이었다.
H-Index는 아래와 같은 방법으로 구한다고 한다.
"어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고,
나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다."
엉? 이게 먼소리여...
아무래도 기준이 되는 어떤 상수가 있는 게 아닌 것 같다.
그래서 이걸 어찌 하나... 생각이 들던 찰나.
문제에 H-Index 위키피디아 링크가 걸려있다는 것을 알았다.
분명 여기라면 구하는 과정에 대한 설명이 있을 것 같아서 들어갔다.
$$\text{h-index f(i) = } \max \{ i \in \mathbb{N} : f(i) \geq i \}$$
역시 바로 정답이 나와줬다...!
그리고 내림차순으로 정렬한 후 위 식을 적용하면 된다는 힌트도 얻을 수 있었다.
이걸 그대로 코드로 옮기면 다음과 같다.
function solution(citations) {
citations.sort((a, b) => b - a);
let h = 0;
for(let i = 0; i < citations.length; i++) {
if (citations[i] >= i + 1)
h = i + 1;
else
break;
}
return h;
}
역시 지식의 보고 위키피디아다.
문제가 참 쉽게 풀렸다.
'Camp > T.I.L.' 카테고리의 다른 글
[TIL #10] n^2 배열 자르기 (0) | 2024.09.11 |
---|---|
[TIL #9] 로그인 / 비로그인 구분 (0) | 2024.09.10 |
[TIL #7] 괄호 회전하기 (0) | 2024.09.06 |
[TIL #6] 햄버거 만들기 (0) | 2024.08.23 |
[TIL #5] 소수 만들기 (0) | 2024.08.22 |