728x90
문제
문제 해결
먼저 H-Index 산출법을 알아야 한다.
h-index 산출 방법
- 발표 논문을 피인용횟수가 많은 순으로 정렬. 피인용횟수가 높은 순으로 번호를 부여.
- 논문의 번호(No)와 피인용횟수를 비교하여 피인용횟수가 논문의 번호(No)와 같거나 큰 번호(No)가 연구자의 h-index가 됩니다.
- 논문 인용 횟수를 내림차순으로 정렬한다.
- 배열의 index+1 값을 No.라고 생각하고 최초로 No.와 같거나 큰 인용횟수를 찾아 return한다.
코드
func solution(_ citations:[Int]) -> Int {
var hIndex = citations.sorted(by: >)
var answer = 0
for i in (0..<hIndex.count).reversed() {
if (i+1) <= hIndex[i] {
answer = i+1
break
}
}
return answer
}
문제 해결 중 어려웠던 것
H-Index 산출법이 뭔지 몰라 해맸지만 알고나니 너무 간단하다...
다른방식
func solution(_ citations:[Int]) -> Int {
for (index, cit) in citations.sorted(by: >).enumerated() {
if index >= cit {
return index
}
}
return citations.count
}
깔끔하게 코드를 작성한 걸 가져와 봤다. enumerated() 를 사용한 방식
배열을 n과 x를 쌍 형태로 리턴해주는 메서드다.
index와 value를 return해준다.
728x90