[프로그래머스]H-Index(JAVA)

문제

https://programmers.co.kr/learn/courses/30/lessons/42747

내 코드

public int solution(int[] citations) {
	int hmax = 0;
    	//1
	Arrays.sort(citations);
	int t=0;
	while(true) {
        	//2
		for(int i=t; i<citations.length; i++) {
			if(hmax <= citations[i]) {
            			//2-1
				if(hmax > citations.length-i || hmax < i) {
					return hmax-1;
				}
				t=i;
				break;
			}
			//3 한번도 인용된 논문이 없을 경우 
			if(i == citations.length-1 && citations[i] == 0)
				return 0;
		}
		hmax += 1;
	}
	
}

풀이

결국 주어진 정수형 배열을 정렬해서 h-index값을 0부터 하나씩 증가시켰고, 문제에서 주어진 조건에 부합하는 h-index를 찾으려고 했다.
1. 주어진 정수형 배열을 정렬한다.
2. 정렬된 배열의 길이 만큼 반복문을 돌면서, hmax(h-index)가 citations[i] 보다 작거나 같을경우 i를 증가시키지 않고 hmax만 1 증가 시켰다.
2-1. 1씩 증가된 hmax가 문제에서 주어진 조건을 벗어날 경우 그 이전 hmax값을 반환한다.
3. 마지막으로 한번도 인용된 논문이 없을경우 0을 반환해준다.

좋은 웹페이지 즐겨찾기