- 문제 : 프로그래머스 H-Index
문제내용
풀이
N개의 논문 중 H-Index 최대값의 조건은 H회 인용된 논문의 개수가 최소 H개 이상이어야 한다. [10, 20, 30] 의 논문이 있다면 모두 10회 이상 인용되었지만 개수가 10개 이상이 아니므로 H-Index의 값은 3이되며 [3,3,4,4,4] 의 논문이 있다면 4회 이상 인용된 논문이 4개가 아닌 3개가 있으므로 H-Index의 값은 3이 된다. H-Index의 값을 쉽게 구하기 위해 내림차순 정렬을 한 뒤 Index = 0 으로 시작하여 Index 값의 위치에 논문의 인용 횟수가 Index + 1 이상임을 검사하며 조건에 만족한다면 Index++ 을 해주며 배열을 검사하면 된다.
정렬
Arrays.sort(arr, Collections.reverseOrder());
하지만 int[] 배열은 위와 같은 방법으로 정렬할 수 없고, Integer타입 배열로 변경해 주어야 한다.
Integer[] arr2 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
전체코드
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Integer[] arr = Arrays.stream(citations).boxed().toArray(Integer[]::new);
Arrays.sort(arr, Collections.reverseOrder());
int index = 0;
for(int el : arr){
// 6 5 3 1 0
if(el < index + 1){
answer = index;
return answer;
}
index++;
}
answer = index;
return answer;
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 광고 삽입 (JAVA) (0) | 2021.08.23 |
---|---|
프로그래머스 더 맵게 (JAVA) (0) | 2021.08.22 |
[복기] Java - 국민은행 210703 (0) | 2021.07.06 |