[JAVA] H-Index

NoHae·2025년 1월 8일
0

문제 출처

코딩테스트 연습 > 정렬 > H-Index
https://school.programmers.co.kr/learn/courses/30/lessons/42747

문제 설명

논문의 인용 횟수가 요소로 있는 배열 citations가 주어질 때, 이 중 h번 이상 인용된 논문이 h편 이상이고, 나머지 논문이 h번 이하 인용된 h의 최댓값을 구하라.

접근 방법

주어진 배열 citations를 정렬한 후, 정렬한 배열의 요소 값을 작은 수부터 현재 논문 이후의 개수와 비교한다. 비교했을 때, 논문 인용 횟수가 현재 논문 이후의 개수보다 크거나 같을 때, 이는 H-Index가 된다.

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int temp[] = citations;
        Arrays.sort(temp);
        
        
        for (int i =0; i<temp.length;i++){
            int h= temp.length - i;
            if(temp[i] >=h){answer = h;
                           break;} 
        }
        
        return answer;
    }
}

알게된 점

처음엔 문제 자체를 이해하는데 어려웠다. 정확히 무슨 말을 하는 지 몰라서 이해하는데 꽤나 걸렸다. 풀이를 시작했을 때, 예시를 보고 중간값부터 비교하면 된다는 생각으로 했지만, 이는 너무 짧게 생각한 것이었다. 두가지로 나눠서 생각하면 편한 문제였다.
1. 현재 논문 이후의 개수
2. 현재 논문의 인용 횟수가 최소 몇 이상인가?
이를 이용하면 쉬운 문제인 것 같다.

문제푼 흔적


profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글