알고리즘/프로그래머스

[프로그래머스] H-Index

쿠큭다스 2022. 1. 5. 10:25
728x90

 

문제 설명

 

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

 

제한사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

 

입출력 예

 

입출력 예 설명

 

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

 

풀이 방법

 

논문의 n편의 길이 내에서 인용된 논문의 최대값은 결국 논문의 n편 길이와 같다.

따라서, 논문의 길이가 최대일때부터 시작하여 논문에 인용된 논문이 h편이상인지 비교하면 된다.

 

이를 위해 이중 for문을 이용하였고, 처음의 for문은 논문의 길이를 최대부터 줄여나가는 과정,

두번째 for문은 논문의 배열요소를 파악해 h번 이상 인용된 논문이 h편 이상인지 파악하는 과정을 파악한다.

 

작성 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
        public int solution(int[] citations) {
 
            int answer = 0;
            for (int i = citations.length; i >= 0; i--) {
                int count = 0;
                for (int j = 0; j < citations.length; j++) {
                    if (citations[j] >= i) {
                        count++;
                    }
                }
                if (count >= i) {
                    answer = i;
                    break;
                }
            }
            return answer;
        }
    }
 
 

 

 

728x90