본문 바로가기

Programmers

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

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

조건은 이런데, h번 이상 인용된 논문이 h편 이상까지만 이해하면 된다.

HashMap을 이용하여 citations의 값을 1씩 줄여가며 key로 하여 map에 넣어주어 개수를 구했다.

그리고 value가 key보다 크거나 같다면 해당 key를 정답으로 제출하였다.

import java.util.HashMap;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        
        for (int i = 0; i < citations.length; i++) {
            for (int j = citations[i]; j >= 0; j--) {
                if (!map.containsKey(j)) {
                    map.put(j, map.getOrDefault(j, 0) + 1);
                } else {
                    map.put(j, map.get(j) + 1);
                }
            }
        }

        for (int i = map.size() - 1; i >= 0; i--) {
            if (i <= map.get(i)) {
                answer = i;
                break;
            }
        }

        return answer;
    }
}