[문제]
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다.
위키백과에 따르면, H-Index는 다음과 같이 구합니다.
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
제한사항
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
[Algorithm]
1. citations 배열을 오름차순으로 정렬
2. 배열을 순서대로 반복하면서 해당 인덱스 기준 남아있는 인덱스들의 개수(논문의 개수)가 해당 인덱스 값보다 크거나 같으면 그 인덱스의 값이 h
[Code]
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int n = citations.length;
for (int i = 0; i < n; i++) {
int h = n - i;
if (citations[i] >= h) {
return h;
}
}
return 0;
}
}
[+ 다른 사람 풀이]
import java.util.*;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int max = 0;
for(int i = citations.length-1; i > -1; i--){
int min = (int)Math.min(citations[i], citations.length - i);
if(max < min) max = min;
}
return max;
}
}
모든 인덱스에서 가능한 H-Index를 계산하고 그 중 최대값을 구하는 방식
모든 경우의 수를 구하기 때문에 효율성 측면에서 떨어질 수도 있음..
이 문제는 문제 읽을 때부터 뭐 좀 거지같다 생각해서 알고리즘 생각도 안났음 ..
'Algorithm Study' 카테고리의 다른 글
[Java Algorithm] 프로그래머스 Lv.1 _ 모의고사 (2) | 2025.07.31 |
---|---|
[Java Algorithm] 프로그래머스 Lv.1 _ 최소직사각형 (2) | 2025.07.30 |
[Java Algorithm] 프로그래머스 Lv.2 _ 가장 큰 수 (4) | 2025.07.30 |
[Java Algorithm] 프로그래머스 Lv.1 _ K번째수 (2) | 2025.07.29 |
[Java Algorithm] 프로그래머스 Lv.3 _ 베스트앨범 (1) | 2025.07.28 |