본문 바로가기
프로그래머스/코딩연습1

[프로그래머스] H-Index (42747)(java)

by 유줘니 2019. 6. 4.

원본 문제 : https://programmers.co.kr/learn/courses/30/lessons/42747

 

 

풀이

 

1. citations[]를 Arrays의 sort메서드로 오름차순으로 정렬한다.

2. 배열의 가장 마지막(큰 수)부터 차례로

3. Math의 min메서드를 사용하여 citations[i]의 값과 순차적 값(?)을 확인
citations.length - i == citations.length - (citations.length - 1) => +1

after i-- : citations.length - (--i) == +2

결과적으로 "citations.length - i" 는 1부터 citations.length까지 1씩 증가하는 수

4. citations[i]와 citations.length - i를 비교하여 최솟값을 반환하고

5. Math의 max메서드로 max값과 min 값 중 최대값을 반환.

 

import java.util.Arrays;

class Solution {
    public int solution(int[] citations) {
        Arrays.sort(citations);

        int max = 0;
        for(int i = citations.length-1; i > -1; i--){	
            int min = Math.min(citations[i], citations.length - i);
            					// 11,9,7,6,0	1, 2, 3, 4, 5
            					// 1,2,3,4,0
            max = Math.max(max, min);
            //if(max < min) max = min;
            					// 0 < 1 : min = 1
                                // 1 < 2 : min = 2
                                // 2 < 3 : min = 3
                                // 3 < 4 : min = 4
                                // 4 < 0 : min = 4
        }

        return max;
    }
}

 

댓글