Lv. 2 H-Index

Kim-yujin·2022년 12월 29일

프로그래머스

목록 보기
5/6
post-thumbnail

프로그래머스 _Lv. 2 H-Index

문제링크

H-Index는 과학자의 생산성과 영향력을 나타내는 지표이다.어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 한다. 과학자의 H-Index인 h를 구하시오.

예시

과학자 논문 인용 횟수 [3, 0, 6, 1, 5]
1. 이 과학자가 발표한 논문의 수는 5편이고,
2. 그중 3편의 논문은 3회 이상 인용되었습니다.
3. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에
4. 이 과학자의 H-Index는 3입니다.

경우의 수

  • 1번 케이스
    과학자 논문 인용 횟수 배열 : [0, 1, 2]
    결과 : 1
  • 2번 케이스
    과학자 논문 인용 횟수 배열 : [6, 5, 5, 5, 3, 2, 1, 0]
    결과 : 4
  • 3번 케이스
    과학자 논문 인용 횟수 배열 : [12, 11, 10, 9, 8, 1]
    결과 : 5

작성 조건

  1. 정렬 Arrays.sort() 문제
  2. 논문 n편 중, h번 이상 인용된 논문이 h편 이상이다.
  3. 나머지 논문은 h번 이하로 인용된다.
  4. h의 최댓값은 과학자의 H-Index이다.

코드

import java.util.*;
 
public class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        Arrays.sort(citations);
        for(int i = 0; i < citations.length;i++) System.out.print(citations[i] + " ");
 
        for (int i = 0; i < citations.length; i++) {
            //h를 길이 - i 한 이유는 h의 조건이 h편 이상 이면서 h번 이상 인용된 것이기 때문에
            //h를 논문의 수라고 생각을 했고 
            int h = citations.length - i;
 
            //citations[i]는 인용된 횟수로, 인용된 횟수가 논문의 수보다 같거나 켜야 하는 조건으로 인해서 비교함 
            if (citations[i] >= h) { //	  3 5 6  >=   3 2 1
                answer = h; //answer은 h편이됨 
                break;
            }
        }
 
        return answer;
    }
}

코드 해설
1. import java.util.Arrays;
오름차순 정렬 Arrays.sort()를 사용하기 위해 작성함
2. int h = citations.length - i;
h변수는 인용된 논문의 횟수로, 논문의 최대값인 citations.length부터 -1씩 감소되며 오름차순으로 정렬된 citations 배열과 조건 비교함.
3. if(citations[i] >= h)
h는 인용된 논문의 횟수로, 인용된 논문의 횟수와 인용된 횟수를 조건비교함. 조건은 인용된 횟수가 h로 인용된 논문의 횟수수 이상인지 아닌지 조건 비교함. 참이면 실행

profile
🐰노력하며 살아가기🐰

0개의 댓글