본문 바로가기

Algorithm/Programmers

[프로그래머스_JAVA_알고리즘] H-Index #정렬

Arrays.sort를 이용해서 정렬 후 최대값을 리턴할 수 있습니다.

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        Arrays.sort(citations); // 인용 수를 오름차순 정렬
        
        for(int i = 0; i < citations.length; i++){
            int h = citations.length - i; // 현재 논문의 인용 수를 기준으로 h값 계산
            
            if(citations[i] >= h){ // 조건 확인: 인용 수가 h 이상인 논문이 h편 이상
                answer = h;
                break;
            }
        }
        return answer;
    }
}

 

citations를 정렬하면 [0, 1, 3, 5, 6]이 됩니다.

해당 논문 인용 횟수 (citations[i]) h h회 이상 인용된 논문 편수가 h편 이상이다. (true/false)
0 5 5회 이상 인용된 논문 편수가 5편 이상이다.
false (0편)
1 4 4회 이상 인용된 논문 편수가 4편 이상이다.
false (1편)
3 3 3회 이상 인용된 논문 편수가 3편 이상이다.
true (3편)
5 2 2회 이상 인용된 논문 편수가 2편 이상이다. 
true (5편)
6 1 1회 이상 인용된 논문 편수가 1편 이상이다. 
true (6편)

 

따라서 정답은 3이 됩니다.

 

.

.

.

 

문제는 아래에서 확인할 수 있습니다.

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr