프로그래머스 Lv2 H-Index (python)

김범기·2024년 2월 18일

프로그래머스

목록 보기
71/77

H-Index

풀이

문제를 이해한 줄 알았는데, 문제를 제대로 이해하지 못하고 있었다.
처음에는 아래 처럼 풀었다.

# H-index는 과학자의 생산성과 영향력을 나타내는 지표
# h-index = h번 이상 인용된 논문이 h편 이상(n-h)

def solution(citations):
    h_index = 0
    # 각 논문을 인용한 횟수로 오름차순 정렬
    citations = sorted(citations)
    n = len(citations)
    # 각 논문
    for i in range(n):
        # 현재 논문이 인용된 수가 (현재 논문이 인용된 수 이상인 논문들의 갯수)와 같으면
        if citations[i] == (n-i) and h_index < citations[i]:
            h_index = citations[i]
    return h_index

처음에는

해당 논문이 인용된 횟수 = 해당 논문이 인용된 횟수이상 인용된 논문의 수

로 생각하고 풀었다. 그런데 그게 아니라고 한다.
질문하기에서 알려준 내용을 보니 이런 내용이라고 한다.

gpt에게 물어보니 아래처럼 답해준다.

h-index는 연구자의 연구 성과를 평가하는 지표 중 하나로, 연구자의 논문이 얼마나 많이 인용되었는지와 그 논문 수를 동시에 고려합니다. 즉, 품질과 양을 동시에 반영한 지표라고 볼 수 있습니다.
h-index의 정의는 다음과 같습니다: 'h'라는 수 이상 인용된 논문이 'h'편 이상이고, 나머지 논문이 'h'번 이하 인용되었다면, 그 'h'가 바로 h-index입니다.
;
예를 들어, 한 연구자가 쓴 논문들의 인용 횟수가 각각 10회, 8회, 5회, 4회, 3회, 3회라면, 이 연구자의 h-index는 4입니다. 이유는 4번 이상 인용된 논문이 4편이기 때문입니다. 만약 5번 이상 인용된 논문이 5편이었다 h-index는 5가 되었을 것입니다.
;
결국, h-index는 연자의 논문들이 얼마나 일관되게 인용되었는지를 보여주는 지표라고 볼 수 있습니다. h-index가 높을수록 그 연구자의 연구 성과가 높다고 판단합니다. 하지만 h-index만으로 연구자의 연구 성과를 완전히 평가하는 것은 부적절하며, 다른 여러 지표와 함께 고려되어야 합니다.

흐음 뭐.. 그렇다고 한다....
난 질문하기에 알려주신 분의 말을 토대로 문제를 다시 풀었다.

def solution(citations):
    h_index = 0
    citations = sorted(citations)
    n = len(citations)
    for i in range(n):
        tmp = min(len(citations[i:]),citations[i])
        if tmp > h_index:
            h_index = tmp
    return h_index

다른 사람 풀이

사람들 진짜 코드 깔끔하게 잘 짠다..

def solution(citations):
    citations.sort(reverse=True)
    answer = max(map(min, enumerate(citations, start=1)))
    return answer
def solution(citations):
    citations = sorted(citations)
    l = len(citations)
    for i in range(l):
        if citations[i] >= l-i:
            return l-i
    return 0
profile
반드시 결승점을 통과하는 개발자

0개의 댓글