알고리즘문제풀이/프로그래머스
[프로그래머스]H-Index_Java
초보개발자..
2021. 7. 31. 12:09
--문제--
https://programmers.co.kr/learn/courses/30/lessons/42747
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
--문제접근--
H-index는 문제 접근을 어떻게 할지 고민을 하고 시작하였습니다.
문제에 대해서 효율적으로 풀어보기 위하여 이분탐색을 통하여 풀어봤습니다.
이분탐색을 해가면서 H-index의 조건을 맞다면 답에 넣는 방향으로 진행했습니다.
public class Hindex {
public int solution(int[] citations) {
int answer=0;
int maxv=0;
int leng=citations.length;
for(int i=0;i<leng;i++) {
maxv=Integer.max(maxv, citations[i]);
}
int start=0;
int mid=0;
while(start<=maxv) {
mid=(maxv+start)/2;
int temp=0;
for(int i=0;i<leng;i++) {
if(citations[i]>=mid)temp++;
}
if(temp>=mid&&(leng-temp)<=mid) {
start=mid+1;
answer=mid;
}else maxv=mid-1;
}
return answer;
}
}