풀이
n번 이상 인용된 n개의 논문의 최댓값이 H인덱스이기 때문에 정렬을 하고 앞에서부터 인용횟수와 배열에서 남은 논문의 개수를 비교해서 maxH의 값을 업데이트했다.
def solution(citations):
maxH = 0
citations.sort()
for i in range(len(citations)):
if citations[i] <= (len(citations) - i - 1):
maxH = (len(citations) - i - 1)
else:
return maxH
return maxH
그런데 케이스 9번에서 실패가 떴다. 검색해봤는데, [10, 50, 100]의 경우를 생각해보라고 했다. (itholic.github.io/kata-h-index/)
이 경우 H Index는 3인데 내 것은 0을 반환하고 있었다
생각해보면 len(citations) -i -1로 maxH를 갱신하기때문에 줄어드는 구조인데 처음 maxH = 0으로 설정한 것이 문제였다.
def solution(citations):
Hindex = len(citations)
citations.sort()
for i in range(len(citations)):
if citations[i] <= (len(citations) - i - 1):
Hindex = (len(citations) - i - 1)
else:
return Hindex
return Hindex
초기값을 수정하고 변수명도 바꿨다.
성공!!
다른분의 코드
def solution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
진짜 고인물,,
[6, 5, 3, 1, 0]의 경우 이런 프로세스로 구하는 듯 하다.
index | citations | min |
1 | 6 | 1 |
2 | 5 | 2 |
3 | 3 | 3 (H-Index) |
4 | 1 | 1 |
5 | 0 | 0 |
'알고리즘 스터디' 카테고리의 다른 글
[프로그래머스] 스택/큐 4. 프린터 (0) | 2021.03.07 |
---|---|
[프로그래머스] 스택/큐 3. 기능개발 (0) | 2021.03.04 |
[프로그래머스] 스택/큐 1. 다리를 지나는 트럭 (0) | 2021.02.28 |
[프로그래머스] 탐욕법 3. 큰 수 만들기 (0) | 2021.02.24 |
[프로그래머스] 탐욕법 2. 조이스틱 (0) | 2021.02.24 |