티스토리 뷰

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

 

프로그래머스

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

programmers.co.kr


1. 접근 방식

  • 계수 정렬(Count Sort)를 이용하자

 

인용 횟수가 동일한 논문이 있을 것이다. 따라서 인용 횟수가 인덱스고, 그 수만큼 인용된 논문의 개수를 값으로 하는 리스트를 활용하도록 하자.

 

위 리스트를 뒤에서부터 접근함으로써 높은 논문 인용 횟수에서 그 횟수를 하나씩하나씩 줄여나가자. 만약 현재 인용 횟수보다 논문의 개수가 적다면 인용 횟수를 하나 더 줄이고, 논문 개수보다 많거나 같다면 그 횟수(index)가 바로 H-index이다

 

 

 

2. 정답 코드

def solution(citations):
    size = max(citations)
    count = [0] * (size + 1)
    
    for c in citations:
        count[c] += 1
    
    times = 0
    for i in range(size, -1, -1):
        times += count[i]
        
        if times >= i:
            return i
728x90