H-Index


🔗 質問リンク


https://programmers.co.kr/learn/courses/30/lessons/42747

問題の説明


H-Indexは科学者の生産力と影響力を測定する指標である.ある科学者のh-indexを表すh値を求めたいです.ウィキペディア1によると、H-Indexの計算は以下の通り.
ある科学者が発表したn編の論文の中で、h編以上の論文を引用し、残りの論文がh次以下に引用された場合、hの最高価格はこの科学者のh-indexである.
ある科学者が論文を発表する引用回数の配列参照をパラメータとして与えた場合,その科学者のH−Indexを返すために解関数を記述してください.

⚠▼制限


  • 科学者が発表した論文の数は1編以上1000編以下である.

  • 論文引用回数は0回以上10000回以下である.
  • 💡 プール(言語:JavaとPython)


    簡単そうに見えますが、問題は分かりにくいです.まずソートし、1行2つの条件をフィルタする条件式がコアです.

    Java

    class Solution {
        public int solution(int[] citations) {
            Arrays.sort(citations);
            for (int i = 0; i < citations.length; i++) {
                if (citations[i] >= citations.length-i)
                    return citations.length-i;
            }
            // 여기는 올 수 없다
            return 0;
        }
    }

    Python

    def solution(citations):
        citations.sort()
        l = len(citations)
        for i in range(l):
            if citations[i] >= l-i:
                # 논문이 인용된 횟수(h번 이상) >= 인용된 논문의 개수(h개 == h번)
                return l-i
        return 0