문제를 얼핏봤을때 아ㅋㅋ쉽네 생각했는데 코드로 짜보려고하니깐 정말 힘들었다.
분명 잘만 생각해보면 코드는 쉬울거같은데 그 잘만 생각해보는게 너무나도 힘들었다.
결과적으로 h이상인게 h개일때, h의 최댓값을 구하면 되는데 한시간반동안 고전하다가 풀게되었다.
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int n = citations.length;
for (int i = 0; i < n; i++) {
int h = n - i;
// h번 이상 인용된 논문이 h편 이상인 경우, h-index를 반환
if (citations[i] >= h) {
return h;
}
}
// h-index를 찾을 수 없는 경우, 0을 반환
return 0;
}
}
먼저 Arrays.sort()를 통해 citations 배열을 오름차순 정렬을해준다.
int h는 n-i를 해주고,
if문에서 citations[i]가 h이상일때, citations[i]이상인 논문은 h이상 존재한다.(오름차순이기 때문에)
그렇게 return h 를 해준다.