H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
처음 문제를 풀 때, h번 이상, h번 이하 이부분을 잘 못 이해해서 계속 틀리게 나왔었다. 하지만 문제를 제대로 읽어보니 이상, 이하를 눈여겨보며 다시 문제를 풀기 시작했다. 그래서 정렬을 한 다음, h를 인덱스+1로 잡아주었고 말그대로 문제처럼 알고리즘을 풀어주며 쉽게 풀 수 있었다.
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for(int i=0; i<citations.length; i++)
{
int h=i+1;
int up=0;
int down=0;
for(int j=0; j<citations.length; j++)
{
if(h <= citations[j])
down++;
if(h>=citations[j])
up++;
}
if(h>=up && h<=down)
answer=i+1;
}
return answer;
}
}