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
}
다음과 같은 코드로 해결할 수 있었다!