Algorithm/코딩테스트 (Python)

[프로그래머스][정렬] H-Index

싱브이 2023. 12. 11. 21:55
728x90
반응형

문제

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

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

 

 

 

 

내 생각

H-Index를 모르면 문제만 보고 한번에 이해하기 어렵다.

근데 이해만 한다면 너무나 쉽게 풀 수 있는 문제였다.

논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index

그러니까 이 문장을 쪼개서 해석할 필요가 있다. 

조건 1) 논문 n편 중, h번 이상 인용된 논문이 h편 이상 → h번 이상 인용된 논문이 h편 이상

조건 2) 나머지 논문이 h번 이하 인용되었다면, h의 최댓값  조건 1을 제외한 나머지 논문은 h번 이하로 인용

즉, 인덱스를 뽑아내면 쉽다! 여기서 인덱스가 의미하는 것은 h번을 알아내기 위한 index번 이상 인용된 논문의 개수를 나타내는 것이다.

 

 

 

 

내 코드

#[3, 0, 6, 1, 5]
def solution(citations):
	#[6, 5, 3, 1, 0]
    citations.sort(reverse = True)
    
    # 1. 0, 6
	# 2. 1, 5
    # 3. 2, 3
    # 4. 3, 1
    for idx , citation in enumerate(citations):
    	# 3 >= 1
        if idx >= citation:
			# 3
            return idx
    return len(citations)
728x90
반응형