문제를 풀기 앞서, H-Index가 정확히 뭔지 모르는 상태에서 문제를 푸려고 하면 대충 맞는 것 같아 보이지만 다양한 케이스에서 틀리는 경우가 계속 생기는데
H-Index는 최소 ‘H’번 이상 인용된 논문이 ‘H’편 있어야 하는데 예제로 보자면
3, 0, 6, 1, 5 순으로 인용되었다면 3
0, 1, 2 순으로 인용되었다면 1
7, 7, 7 순으로 인용되었다면 3
이 나와야 하는데
public class Hindex {
public static int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for (int i = 0; i < citations.length; i++) {
int h = citations.length - i;
if (citations[i] >= h) {
answer = h;
break;
}
}
return answer;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println(solution(arr));
}
}
문제를 풀어보자면 먼저 int[] 배열을 받으면 정렬 시킨 후 배열 만큼 돌려주면서 나올 수 있는 최대값을 h로 가정하면서 1씩 줄여가되 배열의 값이 h 이상이면 해당 값이 바로 H-Index 이므로 중단시킨 후 h를 반환해주면 끝이다.
Leave a Reply