H-Index는 과학자의 생산성과 영향력을 나타내는 지표이다.어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 한다. 과학자의 H-Index인 h를 구하시오.
과학자 논문 인용 횟수 [3, 0, 6, 1, 5]
1. 이 과학자가 발표한 논문의 수는 5편이고,
2. 그중 3편의 논문은 3회 이상 인용되었습니다.
3. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에
4. 이 과학자의 H-Index는 3입니다.

경우의 수
import java.util.*;
public class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for(int i = 0; i < citations.length;i++) System.out.print(citations[i] + " ");
for (int i = 0; i < citations.length; i++) {
//h를 길이 - i 한 이유는 h의 조건이 h편 이상 이면서 h번 이상 인용된 것이기 때문에
//h를 논문의 수라고 생각을 했고
int h = citations.length - i;
//citations[i]는 인용된 횟수로, 인용된 횟수가 논문의 수보다 같거나 켜야 하는 조건으로 인해서 비교함
if (citations[i] >= h) { // 3 5 6 >= 3 2 1
answer = h; //answer은 h편이됨
break;
}
}
return answer;
}
}
코드 해설
1. import java.util.Arrays;
오름차순 정렬 Arrays.sort()를 사용하기 위해 작성함
2. int h = citations.length - i;
h변수는 인용된 논문의 횟수로, 논문의 최대값인 citations.length부터 -1씩 감소되며 오름차순으로 정렬된 citations 배열과 조건 비교함.
3. if(citations[i] >= h)
h는 인용된 논문의 횟수로, 인용된 논문의 횟수와 인용된 횟수를 조건비교함. 조건은 인용된 횟수가 h로 인용된 논문의 횟수수 이상인지 아닌지 조건 비교함. 참이면 실행