본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 정렬 : H-Index Kotlin

by 일상 속 둔치 2020. 9. 26.

이 문제는,,, 읽고 너무 헷갈렸다,,,

 

h가 citations 배열에 있는 수가 아니어도 되더라,,,

 

예를 들어 3,0,6,1,5 일때 0,1,3,5,6으로 정렬하고 보면

 

3번 이상 인용된 논문이 3편 이상이고(3,5,6) 나머지 논문이(0,1) 3번 이하 인용되었기 때문에 h가 3이다.

 

근데 여기서 3이 배열 값이라서 무조건 배열에 있는 값이 대상이라고 헷갈렸었다.

 

그렇게 생각하지말고 1,2,3,4,5... 이렇게 h값을 가져간다고 생각하는게 더 편하다.

* 여기서 h번 이상이기 때문에 꼭 배열값이 h일 필요는 없다.

 

자, 그러면 문제를 풀어보자.

 

일단 정렬을 해보자.

 

그리고 앞에서부터 지금 보고 있는 것보다 많이 인용된 것의 개수(h)가 지금 배열의 값보다 큰지 확인한다.

* 정렬을 했기 때문에 전체 크기에서 index를 제외해주면 갯수를 쉽게 구할 수 있다.

 

 

그리고 지금 보고 있는 것보다 많이 인용된 개수가 h이기 때문에 조건에 맞으면 return 해준다.

 

class Solution {
    fun solution(citations: IntArray): Int {
        var answer = 0

        citations.sorted()
                .mapIndexed { index, i ->
                    if(citations.size-index >= i)
                        return citations.size-index
                }
        return answer
    }
}

댓글