😒문제
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.
어떤 과학자가 발표한 논문 n
편 중, h
번 이상 인용된 논문이 h
편 이상이고 나머지 논문이 h번 이하 인용되었다면 h
의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
입출력 예
citations | return |
---|---|
[3, 0, 6, 1, 5] | 3 |
👀제약조건
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
입출력 예 설명
이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.
※ 공지 - 2019년 2월 28일 테스트 케이스가 추가되었습니다.
✔접근방법
H-Index의 정의에 따라 H의 최대값은 citations 의 최대값 부터 시작 될 수 밖에 없다.
따라서 H의 값이 가장 큰 값부터 -1씩 for문을 돌면서 조건에 맞는 h 값을 찾아 바로 리턴한다.
각 논문 인용 횟수를 h 값과 비교하여, h 이상이면 카운팅하고
카운팅 값이 h와 동일해지면 리턴한다.
h값 보다 작으면 h번 이상 인용된 논문이 아니기 때문.
🤔풀이
def solution(citations):
for h in range(max(citations),0,-1):
over_h = 0
for citation in citations: # 리스트의 논문 인용 횟수를 탐색
if citation >= h: #인용 횟수가 h 보다 크면
over_h+=1 #카운팅
if over_h == h: # 인용횟수 논문의 수가 h이면
return h #h리턴
return 0
...
n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용
[4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6]
이라는 리스트가 있을때,
우선 “h번 이상 인용된 논문이 h편 이상” 에 부합하는 경우를 찾아보면
- 4회 이상 인용된 논문이 4개 이상 (15개),
- 5회 이상 인용된 논문이 5개 이상 (11개),
- 6회 이상 인용된 논문이 6개 이상이다 (6개).
“나머지 논문이 h번 이하 인용되었다면” 이라는 조건까지 따져보면,
- 4회 이상 인용된 논문이 4개 이상, 하지만 나머지 논문 중에 4번 초과 인용된 논문이 존재함. (5, 6)
- 5회 이상 인용된 논문이 5개 이상, 하지만 나머지 논문 중에 5번 초과 인용된 논문이 존재함. (6)
- 6회 이상 인용된 논문이 6개 이상, 또한 나머지 논문은 전부 6회 이하 인용 (4, 5)
따라서 문제의 조건에 완벽히 부합하는 H-INDEX는 6
→ 결론은 h번 이상 인용된 논문이 h편 이상이되는, h의 최대값
'알고리즘' 카테고리의 다른 글
프로그래머스 - 해시 - 위장 (0) | 2021.02.14 |
---|---|
프로그래머스 - 정렬 - K번째 수 (0) | 2021.02.14 |
프로그래머스 - 스택_큐 - 주식가격 (0) | 2021.02.14 |
프로그래머스 - 해시 -베스트앨범 (0) | 2021.02.14 |
프로그래머스 - 힙 - 더 맵게 (0) | 2021.02.14 |
Uploaded by Notion2Tistory v1.1.0