계단을 오르듯이

[JAVA] 프로그래머스 - H-Index 본문

알고리즘/프로그래머스

[JAVA] 프로그래머스 - H-Index

happyAyun 2022. 2. 2. 22:22

h의 범위가 될 수 있는 최대의 범위는 citations 배열의 길이만큼이므로 0부터 길이까지만큼 탐색한다.

배열은 오름차순으로 정렬한 후 해당 배열의 큰 수부터(뒤에서부터) 탐색하여 해당 수만큼의 개수를 만족하면 빠져나오고 answer의 값을 갱신해주고, 더 이상 만족하지 못할 시 모든 탐색을 종료한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int len = citations.length;
        Arrays.sort(citations);
        for(int i=0;i<=len;i++){ // h의 범위는 0부터 length까지
            int cnt = 0;
            boolean flag = false;
            for(int j=len-1;j>=0;j--){ // 뒤에서부터 
                if(citations[j] >= i) {
                    if(++cnt >= i) { // H-Index를 만족하면
                        flag = true;
                        answer = i; // 최대의 h로 갱신
                        break;
                    }
                }
            }
            if(!flag){ // 최대를 넘으면 for문 나오기
                break;
            }
        }
        return answer;
    }
}
cs