프로그래머스 - H-Index

312·2023년 12월 13일

알고리즘-kotlin

목록 보기
2/9

문제 설명

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

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

풀이

문제가 굉장히 난해해서 단번에 이해하는데 어려움이 있었다.
다행히 친절하게 해석해주신 분 덕분에 쉽게 이해할 수 있었다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상일 때의 h값과 그 때, h번 이상 인용된 논문의 개수 중 최대값을 리턴한다.

프로그래머스 장진형님 감사합니다.

H-index는 여러 값이 존재할 수 있으나 그 중 가장 큰 값을 찾고 있으므로 내림차순으로 정렬 후 가장 먼저 찾는 H-index가 최댓값이라고 생각했다.

fun solution(citations: IntArray): Int {
	// 내림차순 정렬
    val sortedCitations = citations.sortedDescending()

	// 최댓값이 0일때의 예외처리
    if (sortedCitations[0] == 0) return 0
    // 가장 먼저 찾는 H-index를 반환
    for (i in sortedCitations.indices) {
        if (i >= sortedCitations[i]) return i
    }

	// 찾지 못했을때는 논문이 모두 인용된것이므로 리스트의 크기를 반환
    return citations.size
}

다음과 같은 코드로 해결할 수 있었다!

profile
안드로이드 개발자 이상일입니다.

0개의 댓글