leetcode - 274. H-Index
주제
H-Index
문제
https://leetcode.com/problems/h-index/description/
연구자의 H-Index를 반환하라
- H-Index
h 개의 논문이 각각 최소 h개의 인용을 갖는 가장 큰 숫자 h라고 한다.
예를 들어 [1, 3, 1]의 배열의 H-Index는 1이다.
아래는 chatgpt에게 물어본 H-Index의 조건이다
[1, 3, 1] 배열을 내림차순으로 정렬한다.
논문순서 | 인용횟수 | 조건 | 결과 |
---|---|---|---|
1 | 3 | 1 <= 3 | ok |
2 | 1 | 2 <= 1 | fail |
3 | 1 | 3 <= 1 | fail |
입출력 예시
예시 1
입력: 인용 = [3,0,6,1,5]
출력: 3
설명: [3,0,6,1,5]는 연구자가 총 5편의 논문을 가지고 있고 각각 3, 0, 6, 1, 5회의 인용을 받았다는 것을 의미합니다.
연구자는 각각 3회 이상 인용된 논문이 3편 있고 나머지 2편은 각각 3회 이하 인용되었으므로 h-인덱스는 3입니다.
예시 2
입력: 인용 = [1,3,1]
출력: 1
조건
- n == citations.length
- 1 <= n <= 5000
- 0 <= citations[i] <= 1000
문제풀이
- 배열을 정렬 후 뒤집는다. (내림차순으로 정렬)
- 반복문을 돌며 배열의 요소가 (인덱스 + 1) 보다 크다면 변수에 + 1을 한다.
- 반복문을 통해 누적된 변수를 리턴한다.
class Solution {
public int hIndex(int[] citations) {
int result = 0;
Arrays.sort(citations);
reverse(citations, 0, citations.length - 1);
for (int i = 0; i < citations.length; i++) {
if (citations[i] >= i + 1) {
result++;
}
}
return result;
}
public void reverse(int[] citations, int start, int end) {
while (start < end) {
int temp = citations[start];
citations[start] = citations[end];
citations[end] = temp;
start++;
end--;
}
}
}
댓글남기기