[Algorithm] 프로그래머스 H-index
Updated:
문제 설명
나의 풀이
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보다 큰 수가 들어오는 경우에는 전체 개수를 반환해주면 된다.
Leave a comment