99클럽 코테 스터디 12일차 TIL - [프로그래머스] H-Index (Java)

seri·2024년 7월 31일
0

코딩테스트 챌린지

목록 보기
37/62

📌 오늘의 학습 키워드

[프로그래머스] H-Index (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/42747

📌 공부한 내용 본인의 언어로 정리하기

문제 탐색하기

입력 : 논문의 인용 횟수를 담은 배열
출력 : 논문의 H-Index

가능한 시간복잡도

O(nlogn)

알고리즘 선택

정렬

📌 코드 설계하기

  1. Citations 배열을 정렬한다.
  2. 정렬된 배열을 끝에서부터 시작하여 각 논문의 인용 횟수를 확인한다.
  3. 현재 논문을 포함하여 그 이후에 있는 모든 논문들이 현재의 인용 횟수 이상으로 인용되었는지를 확인한다. 이때, 인용 횟수 h는 전체 논문 수 n에서 현재 인덱스 i를 뺀 값으로 정의된다. 즉, h = n - i.
  4. citations[i] >= h인 경우가 처음 발견되면, 그 h값이 H-Index가 됩니다.
  5. H-Index를 출력한다.

📌 오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

없음

어떻게 해결했는지

없음

무엇을 새롭게 알았는지

내일 학습할 것은 무엇인지

구현

📌 정답 코드

import java.util.Arrays;

public class Solution {
    public int solution(int[] citations) {
        // Step 1: Sort the citations array
        Arrays.sort(citations);
        
        int n = citations.length;
        int hIndex = 0;
        
        // Step 2: Iterate over the sorted array from the end
        for (int i = 0; i < n; i++) {
            int h = n - i; // Number of papers with at least h citations
            if (citations[i] >= h) {
                hIndex = h;
                break;
            }
        }
        
        return hIndex;
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글