Simple&Natural

정렬 - H-index 본문

코딩테스트 풀이/프로그래머스

정렬 - H-index

Essense 2022. 5. 1. 14:28
728x90

 

 

배열의 전체 크기가 1000 이하로 작기 때문에 시간복잡도를 O(n^2)으로 잡아도 매우 빠르게 통과가 가능했다.

 

 

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        List<Integer> list = Arrays.stream(citations).boxed().collect(Collectors.toList());

        // 각 논문을 조회수 순으로 정렬
        Collections.sort(list, Collections.reverseOrder());
        
        // 모든 논문이 발행 편수 이상 인용이 되었는지 확인
        for (int h = 1; h <= list.size(); h++) {
            boolean isValid = true;
            for (int i=0; i<h; i++) {
                if (list.get(i) < h) {
                    isValid = false;
                    break;
                }
            }
            if (isValid && h > answer) {
                answer = h;
            }
        }
        
        return answer;
    }
}

 

 

 

 

다른 풀이를 보다가 개인적으로 인상 깊었던 풀이인데

 

인용 편수는 증가

인덱스는 감소

 

루프를 돌며 이 둘 간의 최소값만 체크해준 뒤

가장 큰 수를 리턴하면 된다.

누군지 몰라도 똑똑하네...

 

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;
    }
}
728x90

'코딩테스트 풀이 > 프로그래머스' 카테고리의 다른 글

해시 - 위장  (0) 2022.05.03
정렬 - 가장 큰 수  (0) 2022.04.30
Hash - 전화번호 목록  (0) 2022.04.24
Hash - 베스트 앨범  (0) 2022.04.24
Hash - 완주하지 못한 선수  (0) 2022.04.23