본문 바로가기
코딩테스트/파이썬

[프로그래머스/파이썬] h-index 풀이 (정렬, sort, python)

by JI NY 2025. 4. 8.

[프로그래머스/파이썬] h-index 풀이 

(정렬, sort, python)

[프로그래머스/파이썬] h-index 풀이

 

 

1. 문제

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


 

2. 문제 해결 아이디어 (풀이)

 

변수 선언

1. max_h : 결과 (조건에 부합하는 최대 인용 수)

2. h_higher_count : h번 이상 인용된 개수를 구하기

 

풀이

1. 오름차순으로 citations를 정렬한다.

* sort를 이용해서 배열 정렬이 가능하다.

 

2. for문으로 논문 리스트(citations)를 순회한다.

 

2.1. 그리고 현재 h번 이상 인용된 횟수를 구한다.

- len-i의 이유는, 오름차순 정렬이기 때문에 현재까지 개수를 빼면 자연스럽게 h번 이상 인용된 논문의 개수가 구해지기 때문이다.

 

2.2. 조건에 부합하는 최대 인용수가 현재 h번 이상 인용된 횟수보다 크고, 나머지 h편 이하로 인용된 논문 수가 h번 이하로 인용되었다면 조건에 부합하므로 max_h를 현재 인용된 수로 바꿔준다.

 


3. 코드

def solution(citations): ## 논문의 인용 횟수를 담은 배열
    max_h = 0 # 인용수
    h_higher_count = 0 # h번이상 인용된 카운트 세기
    
    citations.sort() # reverse = True
    
    for i in range(len(citations)):
        # 큰 인용 개수를 구하자
        h_higher_count = len(citations) - i
        if h_higher_count >= max_h and h_higher_count <= citations[i]: # 나머지 논문이 h편 이하라면
            # 인용가능한 개수입니당당
            max_h = h_higher_count
        # print(i,'번째','h_higher_count',h_higher_count, 'max_h', max_h)
    return max_h

 

 

 


4. 마무리

 

- 미리 인용된 횟수를 오름차순으로 정렬해주는 것이 핵심인 것 같다!

 


읽어주셔서 감사합니다~

도움이 되셨다면 공감 부탁드립니다 😊 

댓글