발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, H-Index를 return하는 solution함수를 작성하는 문제이다.
H-Index는 h번 이상 인용된 논문이 h편 이상 있을 때, h값의 최댓값이다.
h값으로 올 수 있는 최댓값과 최솟값을 구하고, for 문을 통해 h의 최댓값을 구했다.
오름차순 정렬한 배열의 끝에서부터 h값을 검색하는데, h번 이상 인용된 논문이 h편 이상이어야 하기 때문에, citations[target - h] 값이 h 이상이어야 한다는 것을 조건으로 검색했다.
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations); // 오름차순 정렬
int max = citations[citations.length-1];
if (max == 0) { // 인용 수가 모두 0일 경우
return 0;
} else if (citations.length < max) { // 논문의 수가 최대 인용 수 보다 작을 경우
max = citations.length;
}
int min = citations[0];
if (citations.length < min) { // 논문의 수가 최소 인용 수 보다 작을 경우
min = citations.length;
}
for (int i = max; i >= min; i--) {
int index = citations.length - i; // 논문 수가 i편 이상
if (citations[index] >= i) { // 인용 수가 i번 이상
answer = i;
break;
}
}
return answer;
}
}