https://programmers.co.kr/learn/courses/30/lessons/42747
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
정렬 카테고리, Level 2 문제이며 정렬 문제 중엔 생각보다 풀만했던 문제였다.
문제가 처음엔 이해가 잘 안될 수 있는데, n 편의 논문 중 h 번 이상 인용된 논문이 h 개 이상인 경우, h의 최대값을 구하는 문제이다.
논문 개수가 최대 1000개인점을 감안하여, for loop 를 시작할 때 1000부터 0이 될때까지 줄이는 방식으로 하되 조건을 처음 만족하는 값을 발견할 경우 리턴하는 방식으로 구현하였다.
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static int solution(int[] citations) {
int answer = 0;
long max = 0;
List<Integer> list = Arrays.stream(citations).boxed()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
for (int i = 1000; i > 0; i--) {
final int h = i;
long count = list.stream().filter(elem -> elem >= h).count();
if (count >= h) {
max = h > max ? h : max;
break;
}
}
return (int) max;
}
}'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 전화번호 목록 (0) | 2022.03.29 |
|---|---|
| [프로그래머스] 단어 변환 (0) | 2022.03.29 |
| [프로그래머스] 가장큰수 (0) | 2022.03.28 |
| [프로그래머스] 신규 아이디 추천 (0) | 2022.03.16 |
| [프로그래머스] 신고 결과 받기 (0) | 2022.03.15 |