제주 탈출 일지

[python3] 프로그래머스 레벨 2 - H-Index 본문

코딩 테스트

[python3] 프로그래머스 레벨 2 - H-Index

귀건 2021. 6. 20. 04:22
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42747?language=python3# 

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

 

# 최종답안

def solution(citations):
    answer = 0
    
    citations = sorted(citations)
    c = []
    for i in range(len(citations) + 1):
        a = [j for j in citations if i >= j] # h번 이하
        b = [j for j in citations if i <= j] # h번 이상
        
        if i <= len(b) and i >= len(a):
            c.append(i)
    
    if len(c) != 0:
        return max(c)
    
    else :
        return 0

 

처음 풀었을 때, 틀렸던 케이스는

- 모든 논문이 0회의 인용을 가졌을 때

- 답이 len(citations)회 일 때 ([22, 42], 2)

이 두가지 입니다.

 

이를 해결 하기 위해서 range를 len(citations + 1)회까지 범위를 설정하여 len(citations)를 확인할 수있도록 하였습니다.
모두 0회라면 반복문 내의 조건을 만족할 수 없기 때문에 0을 리턴합니다.

 

다른 사람의 풀이

프로그래머스 다른사람의 풀이는 너무 고인물이 많다 ㅠ

def solution(citations):
    citations.sort(reverse=True)
    answer = max(map(min, enumerate(citations, start=1)))
    return answer

이 풀이는 가히 충격적.

728x90
반응형
Comments