H Index
문제정의
어떤 과학자의 H 인덱스를 구하는 문제이다. H 인덱스란 어떠한 학자가 발표한 논문 n편중에 h번이상 발표한 논문이 h편이상일 때 이 h의 최대값이다. 이해가 어려울 수도 있는데 그런 사람을 위해 질문하기에 있었던 링크를 첨부한다.
문제풀이
전체 코드는 다음과 같다. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import java.util.*;
public class HIndex {
//프로그래머스 문제풀이 level2 H-Index
public static void main(String[] args) {
int[] citations = {22, 42};
int answer = 0;
Arrays.sort(citations);
for(int i = citations.length-1; i >= 0; i--)
{
if(citations.length-i >= citations[i])
{
answer = citations.length-i-1;
break;
}
}
if(citations[0] > citations.length)
answer = citations.length;
System.out.println(answer);
}
}
정렬을 사용하였으므로 최종 시간복잡도는 \(O(nlogn)\)이다.
테스트
실은 이 문제를 풀기전에 두 문제 정도 했었는데, 2시간 안에 둘다 풀지 못했다. 그리디는 나름 자신있다고 생각했는데, 새삼 겸손해진다. 나머지 레벨2 문제를 풀어보고 다시 도전해봐야겠다.