본문 바로가기
🐣 알고리즘

[프로그래머스] Swift - H-Index (LV.2)

by @Eddy 2023. 6. 4.
728x90

👆문제풀러 가기👆

문제 설명

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

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

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

 

제한 사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

 

입출력 예

citations return
[3, 0, 6, 1, 5] 3

풀이 [ 메모리: 17,100kb, 최대시간: 4.05ms ] 

func solution(_ citations:[Int]) -> Int {
    var citations = citations.sorted(by: >)
    var result = 0
    
    for h in 0..<citations.count {
        if citations[h] >= h+1 {
            result += 1
        } else {
            break
        }
    }
    return result
}

문제가 뭔소리지? 싶을 수 있는 문제인데, 이해하면 LV.0에 가까운 문제이다.

 

논문이 인용된 횟수(h)가 적힌 논문 전체 배열(citations)이 있고,

h는 논문이 인용된 횟수이며, n은 citations.count와 같다.

h번 이상 인용된 논문 갯수가 최대 몇개인지 찾으면 되기 때문에,

내림차순 정렬 후, 각 h와 h+1번을 비교하면 된다.

반응형

댓글