프로그래머스 코딩테스트 [ H-Index ]
Github 링크
- 이 문제는 보기 드문 이상한 문제였다. 발표한 논문 N 편중, h번이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h 의 최댓값을 구하는게 H-Index다.
- 여기서 문제는 h 번이상 인용된 논문은 0 부터 최댓값이 10000으로 해야되는건지, 아니면 각논문의 인용횟수로 순회를 해야하는건지, 정확한 정보가 없다. 그리고 만약에 H-Index를 구하지 못하는 상황도 있을텐데, 그럴때는 뭐를 리턴해야하는건지의 대한 정보도 일절없다. 질문하기 게시판을 보니 사람들이 많이 화가 나있었더라.. 나도 테케 9번만 안되길래, 별의별 시도를 다해봤지만, 결국 문제에서 안나온 H-Index를 못했을때는 전체 배열의 길이를 리턴하는걸 어떤분이 적어주셔서 통과하게 되었다. 어쨋든 내 코드는 아래와 같다.
import Foundation
func solution(_ citations:[Int]) -> Int {
let min = citations.min()!
let max = citations.max()!
for h in stride(from:max, through: min, by: -1){
let aboveH = citations.filter{$0 >= h}
let countH = aboveH.count
if countH >= h {
return h
}
}
return citations.count
}