혜온의 이것저것

[코딩테스트 고득점 KIT] 정렬 H-index - Python 본문

Algorithm/Programmers

[코딩테스트 고득점 KIT] 정렬 H-index - Python

혜온 :) 2021. 9. 29. 15:37

[문제 이해 및 풀이]

h의 최대값을 뽑는 과정이기 때문에 h가 가질 수 있는 가장 큰 값인 citations의 길이 n 부터 시작했다.

리스트 안에 있는 숫자가 n보다 크거나 같으면 cnt의 값을 1씩 늘려주었다.

리스트를 한 번 돌고 나오면 n번 이상 인용된 논문의 수(cnt)가 나온다.

이때 cnt의 값이 n보다 크거나 같다면, 즉 n편 이상이라면 그 값이 H-index가 된다.

만약 cnt의 값이 n보다 작다고 한다면 n의 숫자를 1씩 줄여나가면서 가장 큰 n값을 찾는다.

이에 해당하는 값이 없다면 (n==0) 최소값인 0을 return해준다.

 

예제를 들어 생각하면 이해하기가 더 쉽다.

더보기
더보기

[3,1,1,4] 인 경우

n=4) 1개(4)

n=3) 2개(3,4)

n=2) 2개(3,4) -> cnt==n 이므로 return 2

----------------------------------------------

[1,1,5,7,6] 인 경우

n=5) 3개(5,6,7)

n=4) 3개(5,6,7)

n=3) 3개(5,6,7) -> cnt==n 이므로 return 3

------------------------------------------------

[0,1,1] 인 경우

n=3) 0개

n=2) 0개

n=1) 2개(1,1) -> cnt>=2 이므로 return 1


[나의 코드]

def solution(citations):
    n=len(citations)
    while (n>0):
        cnt=0
        for num in citations:
            if num>=n:
                cnt+=1
        if cnt>=n:
            break
        n-=1
    return n

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42747

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

Comments