programmers.co.kr/learn/courses/30/lessons/42747
풀이
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이기때문에 큰 수에서부터 작은 수로 내려오면서 찾는 것이다.