[프로그래머스,Level 2] H-Index(JAVA 구현)
코테/프로그래머스(Programmers)

[프로그래머스,Level 2] H-Index(JAVA 구현)

반응형

- 첫 풀이 및 정답풀이

  조이스틱 문제를 풀고 바로 풀어보니 너무 쉽다. H-Index에 대한 정의가 좀 복잡하게 설명되어 있는데, 단순히 h를 찾기 위해 탐색을 수행해주면 된다. 단, 여기서 고려해야 하는 h는 citations로 주어지는 최댓값을 넘을 필요가 없다. 넘게 되면 문제에서 정의하는 H-Index를 만족할 수 없다. 바로 코드를 보자.

 

import java.util.Arrays;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
       
        // 1. 탐색을 위해 주어진 데이터를 정렬.
        Arrays.sort(citations);
        
        // 2. 인용횟수의 최댓값까지 탐색.
        for(int h =0;h<=citations[citations.length-1];h++){
            // 3. h번 이상 인용된 논문의 수.
            int up=0;            
            // 4. citations 탐색.
            for(int j = 0;j<citations.length;j++){
                // 5. h번 이상 인용된 논문을 만나면,
                if(citations[j]>=h){
                    // 6. 전체 논문의 수 - 해당 논문의 인덱스 = h번 이상 인용된 논문의 수.
                    // 정렬을 수행했기 때문에, h번 이상 인용된 논문만 고려하면 된다.
                    up = citations.length - j;                   
                    break;
                }
            }
            
            // 7. h번 인용된 논문의 수 >= h
            if(up>=h){
                // 8. 최댓값 교체.
                if(answer < h) answer = h;
            }
                
        }
        
        return answer;
    }
}

 

반응형