[Algorithm] 프로그래머스 H-index

Updated:

문제 설명

18

나의 풀이

import Foundation

func solution(_ citations:[Int]) -> Int {
    
    let sorted = citations.sorted(by: >)
    let count = sorted.count
    
    for (index, num) in sorted.enumerated() {
        if index+1 > num {
            return index
        }
    }
    return count
}

고민한 점

처음에는 citations 안에 정답이 있어야하는 줄 알고 코드를 작성하였지만, 그렇지 않다.

h번 이상 인용된 논문을 찾기 위해서는 h = index + 1부터 해서 만약 index + 1 > num라면 그 전의 index를 반환해주면 된다.

[6,5,3,1,0]이 있다고 할 때
index: 0 value: 6
h = 1
1번 이상 인용된 논문이 1개 이상 존재한다.

index: 1 value: 5
h = 2
2번 이상 인용된 논문이 2개 이상 존재한다.

index: 2 value: 3
h = 3
3번 이상 인용된 논문이 3개 이상 존재한다.

index: 3 value: 1
h = 4
4번 이상 인용된 논문이 4개 이상 존재하지 않다!!

예외 상황은 [10,11,12,13]과 같이 전부다 index보다 큰 수가 들어오는 경우에는 전체 개수를 반환해주면 된다.

참고

Programmers

Leave a comment