알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - 정렬 - H-Index

HRuler 2020. 10. 28. 15:02

1. 문제

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

 

코딩테스트 연습 - H-Index

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표

programmers.co.kr

2. 나의 풀이

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        Integer [] citations_copy = new Integer [citations.length];
        int i = 0;
        for(int imsi : citations) citations_copy[i++] = imsi;
        Arrays.sort(citations_copy, Collections.reverseOrder());
        int imsi = 0;
        for(i = 0; i < citations_copy.length; i = i + 1) {
        	
        	if(citations_copy[i] >= i + 1) {
        		imsi = i + 1;
        	}else if(citations_copy[i] < i + 1) {
        		
        		break;
        	}
        }
        answer = imsi;
        return answer;
    }
}

3. 다른 사람 풀이

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        Arrays.sort(citations);

        int max = 0;
        for(int i = citations.length-1; i > -1; i--){
            int min = (int)Math.min(citations[i], citations.length - i);
            if(max < min) max = min;
        }

        return max;
    }
}