[Py_Lv2] H-Index

Sunghun📈·2021년 3월 17일
0

프로그래머스

목록 보기
21/93
post-thumbnail

문제 설명

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

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

제한 사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

입출력 예

이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.

접근법

문제 설명을 두번째 읽었을때 정렬을 해야겠다는 생각을 한 문제입니다.

물론 정렬 파트에 있는 문제이기 때문에 정렬을 진행하는게 맞지만 그냥 뿌뜻했습니다.😎

[citations] 리스트의 길이는 발표한 논문의 개수는 발표한 논문의 개수이며
리스트 안에 각 값은 인용된 횟수를 뜻하는 것입니다.

여기서 고민은 어떤 방식으로 return값을 찾느냐 입니다.

1시간 이상 고민을 하였습니다.

시간이 너무도 잘 갔습니다.

[citations] 리스트 안에 값인 인용된 횟수 중에서 H-index값이 정해집니다.

리스트가 정렬된 상태에서 인용된 횟수의 값을 포함 오른쪽으로 나열된 값들이 최대가 되는 경우를 찾으면 답이 나올것 같았습니다.

말이 어렵지만 3개의 군고구마를 넣을 수 있는 기계가 있다면 3개가 다 차는 지점 4개가 가능하다면 4개가 다 차는지점을 찾는 것입니다. 만일 5개를 넣을 수 있는데 고구마는 3개 밖에 없다??
그래도 괜찮습니다.

갖고 있는 고구마가 최대 3개 밖에 없는 경우라면 답은 5입니다.

그래서 아래의 코드를 완성했습니다.

가장 좋아 보이는 답변과 거의 동일하게 만들었다는 부분에서 다시 한번 기분이 좋아졌습니다.

논문별 인용 횟수의 범위가 0이상이기 때문에 한번도 인용되지 않은 경우를
생각하여 return 0을 추가하였습니다.

이제는 이런것도 할 수 있어 또 다시 기분이 좋아졌습니다.

=============================================================

def solution(citations):
    citations = sorted(citations)
    l = len(citations)
    for i in range(l):
        if citations[i] >= l-i:
            return l-i
    return 0
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글