알고리즘문제풀이/프로그래머스

[프로그래머스]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;
	    }
}