본문 바로가기
알고리즘 문제/프로그래머스_Lv2 도장깨기

[프로그래머스] H-Index (Python)

by 스코필 2024. 5. 13.

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

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

제한사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

 

풀이

h가 가질수 있는 최대값은 citations 리스트의 길이이고,

citations 리스트를 정렬 후, h번 인용된 논문이 citations의 논문의 인용 횟수보다 작을 때까지 반복문을 돌아,

h번 이상 인용된 논문 변수와 나머지 논문 변수에 적절히 넣어주어,

조건에 따라 답을 구했다.

 

✅ Code - 성공

def solution(citations):
    answer = 0

    citations.sort()
    for h in range(len(citations) + 1):     # h이 가질 수 있는 최대값 = 논문의 수
        up_cit, remain_cit = 0, 0           # h번 이상 인용된 논문, 나머지 논문
        for i in range(len(citations)):
            if h <= citations[i]:
                up_cit, remain_cit = len(citations) - i, i
                break
                
        if up_cit >= h and remain_cit < h:
            answer = h
                   
    return answer