본문 바로가기

알고리즘/프로그래머스

프로그래머스 - H-Index

 

문제

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

 

프로그래머스

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

programmers.co.kr

 

 

풀이

def solution(citations):
    
    citations.sort()
    answer = 0
    
    for i in range(citations[-1]):
        cnt = 0
        for j in range(len(citations)):
            if citations[j] >= i:
                cnt = j
                break
        if (len(citations) - j) >= i and (j) <= i:
            answer = i

    return answer

 

  • 조건 그대로 푼 답안이다. i는 h-index가 되고, i보다 큰 인용수가 발생하면 그 지점 이후는 i보다 크기 때문에 h-index가 계산된다. (정렬되었기 때문)

 

다른 풀이

def solution(citations):
    citations = sorted(citations)
    l = len(citations)
    for i in range(l):
        if citations[i] >= l-i:
            return l-i
    return 0
  • 내 풀이를 매우 간략하게 줄인 느낌이다.
  • 정렬되었기 때문에 i번째 인용수가 l-i보다 크다면 그 이후는 l-i보다 크다는 말이 되기 때문에 자동적으로 조건이 맞는다. 
  • (ex. [1,4,5,6] 일 때 3일때부터 해당 h-index보다 커지므로 h-index는 3이된다.) 
  • h-index를 생각할때, 전체 논문 개수가 4라면 h-index가 4라는 뜻은 4보다 큰 논문 개수가 4개 이상, 나머지가 4개 이하라는 뜻이 된다. 즉 모든 논문이 인용수가 4 이상이라는 뜻, 같은 예시에서 h-index가 3이면 전체 논문 중 하나가 4보다 인용수가 작고 나머지는 다 크다는 뜻이 된다.