[프로그래머스] H-Index

urzi·2022년 4월 8일
0

PS

목록 보기
17/36

문제

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

알고리즘

정렬

풀이

처음에 조금 이해가 되지 않았지만 완벽히 이해하고 풀이를 적어본다.

  1. 오름차순으로 정렬하면 h번 이하로 인용된 논문은 굳이 확인하지 않아도 된다.
    -> 해당 인덱스 값 아래 있는 것들은 모두 citations[i]값보다 작을 것이기 떄문이다.
    -> 따라서 h번 이상 인용된 논문을 찾는다면 나머지는 h번 이하 인용된 논문이 된다.
  2. h번 이상 인용된 논문은 전체 배열 크기 - 인덱스값 이 된다.
    -> 왜냐하면 citations[i]를 포함한 i보다 큰 값은 모두 citations[i] 이상 인용되었다고 볼 수 있다.
  3. citations[i] 값이 h보다 같거나 크면 answer에 저장하고 바로 break;를 해준다.
    -> 여기가 좀 이해가 안됐는데, i가 커질 수록 인용된 논문의 수는 줄어든다. 문제에서는 최대값을 구하라고 했으므로 가장 먼저 나오는 것이 최대값이 된다.

코드

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int n = citations.length;
        Arrays.sort(citations);

        for (int i = 0; i < citations.length; i++) {
            int h = n - i;
            if (citations[i] >= h) {
                answer = h;
                break;
            }
        }

        return answer;
    }
}
profile
Back-end Developer

0개의 댓글