[프로그래머스] 42747. H-Index
문제 링크
풀이 과정
문제 이해가 잘 안되서 H-Index란? 를 참고했습니다.
논문의 인용 수를 기준으로 내림차순으로 정렬하고, 배열의 요소 값이 인덱스보다 같거나 작아지는 순간의 인덱스가 H-Index가 됩니다.
citations : [3, 0, 6, 1, 5]
정의에 따라 위의 예제에서는 3
번 이상 인용된 논문이 3
편 이상으로, 3이 H-Index가 됨을 알 수 있습니다.
citations : [31, 66]
위 예제에서는 배열을 다 순회해도 수식에 맞는 값을 얻을 수 없으므로, 배열의 길이가 정답이 됩니다.
코드
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static int solution(int[] citations) {
ArrayList<Integer> list = new ArrayList<>();
for (int count : citations)
list.add(count);
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.intValue() - o1.intValue();
}
});
int idx = 0;
while (idx < list.size()) {
if (list.get(idx) <= idx) break;
idx++;
}
return idx;
}
public static void main(String[] args) {
int[] citations = {3, 0, 6, 1, 5};
// int[] citations = {31, 66};
System.out.println(solution(citations));
}
}
댓글남기기