본문 바로가기

Algorithm

[Algorithm] 프로그래머스 H-Index python

반응형

https://programmers.co.kr/learn/courses/30/lessons/42747

 

코딩테스트 연습 - H-Index

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표

programmers.co.kr


풀이

  • H-Index는 n편의 논문 중, h번 이상 인용된 논문이 h편 이상인 h의 최대값이다.
  • 즉, H-Index <= n 이다.
  • 인용 횟수를 순서대로 보기 위해 citations를 정렬한다.
  • 가장 왼쪽에 있는 논문(citations[0])은 가장 적게 인용된 논문이고, 이 논문의 오른쪽에 있는 값들은 이 논문보다 많거나 같게 인용된 논문이다.
  • 따라서 가장 왼쪽에 있는 논문의 인용 횟수(citations[0])보다 많이 인용된 논문의 수를 n편이라 생각한다.
  • citations[0] >= n 이라면, h = n이다. 그렇지 않다면 citations[1]로 넘어간다.
  • 즉, citations[i]보다 많이 인용된 논문의 수를 해당 논문의 오른쪽에 있는 값들의 수(n-i)라 생각하고, citations[i] >= n-i를 비교한다. 조건을 만족한다면, h = n - i이고, 그렇지 않다면 다음 값으로 넘어가 반복한다.

 

소스코드

def solution(citations):
    n = len(citations)
    citations.sort()
    for idx, val in enumerate(citations):
        if val >= n - idx:
            return n - idx            
    return 0

 

🤐 사족

이게 뭔 소리야?? 처음에는 문제를 이해하지 못했다. 코드를 보면 매우 간단하지만, 푸는 데 조금 오래 걸렸다. 만약 코테에서 문제 자체를 이해하는데 막힌다면 일단 건너뛰고 다른 문제부터 해결해야겠다.

 

*위키피디아h-index에 대한 설명이 잘 되어 있으니 참고하자!

반응형