반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.2) - H-Index" 문제를 풀었습니다.
목차
Github
문제 링크
풀이
이번 문제는 코드 작성보다 문제 이해가 더 어려웠던 문제입니다.
일단 H-Index가 무엇인지 정확히 이해를 해야합니다.
문제에는 "어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index"라고 정의되어 있습니다.
여기에서 나머지 논문은 아예 존재하지 않아도 된다는 점과 "h편 이상"이라는 조건을 주의해야 합니다.
즉, [10, 10]일 경우 h-index는 10이 아니라 2입니다.
input 배열을 역순으로 정렬한 뒤 index와 동일한 값이 있을 경우 index가 h-index입니다.
동일한 값이 없을 경우 배열의 길이가 h-index입니다.
h-index의 정의를 찾아보던 중 발견한 정보인데요.
백남 학술 정보관에는 h-index를 구하는 알고리즘이 명시되어 있더라고요.
참고하시면 좋을 것 같습니다!
전체 코드
import Foundation
func solution(_ citations:[Int]) -> Int {
var citations = citations.sorted(by: >)
for i in 0..<citations.count {
if i >= citations[i] {
return i
}
}
return citations.count
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형