H-Index (자바)

김재현·2023년 12월 20일
0

알고리즘 풀이

목록 보기
60/89

문제

정답 코드

import java.util.Arrays;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        Arrays.sort(citations);
        
        for (int rank=citations.length;rank>0;rank--) {
            if (rank<=citations[citations.length-rank]) {
                answer=rank;
                break;
            }
        }
        
        return answer;
    }
}

이 문제는 정렬 후 나열해보고 풀었다.

        // 0 1 3 5 6  인용횟수
        // 5 4 3 2 1  rank

        // 0 1 1 3 5
        // 5 4 3 2 1

        // 0 3 3 3 5
        // 5 4 3 2 1

rank를 맨 뒤에서부터 확인 했을 때, rank가 인용횟수보다 작거나 같아질 때 rank를 return하면 h-index가 된다.

아래는 스터디 팀원분께서 보내주신 h-index를 쉽게 구하는 방법이다.

다른 사람 풀이

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        Arrays.sort(citations);

        int max = 0;
        for(int i = citations.length-1; i > -1; i--){
            int min = (int)Math.min(citations[i], citations.length - i);
            if(max < min) max = min;
        }

        return max;
    }
}

나는 h-index 구하는법을 사용했다면 이 풀이는 정말 알고리즘 풀이를 했다고 볼 수 있다.
citation과 rank를 비교하여 더 작은값을 저장하고, 그 값들 중 가장 큰 값이 h-index이기 때문에 max로 구해줬다.

profile
I live in Seoul, Korea, Handsome

0개의 댓글