programmers.co.kr/learn/courses/30/lessons/42747
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
풀이
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] citations) {
int size = citations.length;
int max = Collections.max(Arrays.stream(citations).boxed().collect(Collectors.toList()));
int answer = 0;
for(int h = max; h >= 0; h--) {
int quote = 0;
for(int j : citations) if(j >= h) quote++;
if(quote >= h && size - quote <= h) {
answer = h;
break;
}
}
return answer;
}
}
1. 입력받은 배열의 size와 max값을 먼저 구한다.
2. max부터 1까지 반복(variable: h)
3. 논문들 중 h번 이상 인용된 논문들의 개수를 센다.(variable: quote)
4. quote >= h && size - quote <= h이면
5. answer에 h를 저장한다.
6. 반복문을 나간다.
7. answer를 반환한다.
조건문같은 경우는 문제에 나온대로 작성해서 설명할 부분이 크게 없는 것 같다.
최대값에서부터 0까지 도는 것은 조건에 맞는 수들 중 최댓값이 H-Index이기때문에 큰 수에서부터 작은 수로 내려오면서 찾는 것이다.