본문 바로가기
2021/코딩테스트

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

by 에이도 2021. 1. 1.

 

programmers.co.kr/learn/courses/30/lessons/42747

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

Steps 

  1. 내림차순 정렬
  2. M = 가장 인용 많이 된 논문의 인용 수
  3. h = 가장 인용 많이 된 수부터 0까지 감소하며 반복
  4. 모든 논문 하나하나 h와 인용 수 비교하기
  5. h 보다 인용 많이 되었으면, count+ 1
  6. 만약 h보다 count(인용된 논문의 수) 많으면 h를 return
  7. h보다 인용 많지 않다면, h를 1 줄여서 다시 시도한다.

 

코드 line 설명

 

def solution(citations):
    
    # 내림차순 정렬
    citations = sorted(citations,reverse= True)
    # h : 가장 인용 많이 된 논문의 인용 수  
    M = citations[0]
    
    # 가장 인용 많이 된 수부터 0까지 감소하며 반복 
    for h in range(M,-1,-1):
        count = 0
        
        # 모든 논문 하나하나 h와 인용 수 비교하기 
        for j in citations:
            
            # h 보다 인용 많이 되었으면, count+ 1
            if h <= j:
                count +=1
            # 만약 h보다 count(인용 된 논문의 수) 많으면 h를 return
            if h <= count:
                return h
      
            # h보다 인용 많지 않다면, h를 1 줄여서 다시 시도한다.

print(solution([3, 0, 6, 1, 5]))
print(solution([2, 2]))

[out]
3
2

 

 

 

def solution(citations):
    
    citations = sorted(citations,reverse= True)
    M = citations[0]
    
    for h in range(M,-1,-1):
        count = 0
        
        for j in citations:
            if h <= j:
                count +=1
                
            if h <= count:
                return h
                
print(solution([3, 0, 6, 1, 5]))
print(solution([2, 2]))

[out]
3
2

 

 

 

댓글