어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
- 조건
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
citations | return |
---|---|
[3, 0, 6, 1, 5] | 3 |
모든 테스트 통과 코드
def solution(citations):
citations = sorted(citations)
l = len(citations)
for i in range(l):
if citations[i] >= l-i:
return l-i
return 0
처음에 내가 낸 코드는 if len(citations) - i >= citations[i] & len(citations) - (len(citations) - i -1 ) <= citations[i] 해서 리스트를 만들어 넣어준 후 max()로 큰 값을 찾아내었다. 문제를 잘 못 해석한 경우였다.
sort를 정렬해서 citations의 길이에서 i 즉, 인덱스 값을 빼준 값이 citations[i]값보다 작게하는 l-i값만 구해주면 되는 것이었다.