https://school.programmers.co.kr/learn/courses/30/lessons/42747
먼저 citations 리스트를 내림차순으로 정렬했다.
--> 정렬 결과 : [6, 5, 3, 1, 0]
for문으로 리스트를 돌건데 enumerate 함수를 사용하여 리스트의 index 값도 같이 사용할 것이다.
❓왜 index를 사용할까❓
--> index값으로 인용횟수가 c번 이상인 논문 개수를 구할 수 있기때문
ex) [6, 5, 3, 1, 0]
1) i = 0 --> 인용횟수가 6번 이상인 논문 개수는 i+1 = 1개
2) i = 1 --> 인용횟수가 5번 이상인 논문 개수는 i+1 = 2개
...
5) i = 4 --> 인용횟수가 0번 이상인 논문 개수는 i+1 = 5개
--> i+1을 사용하여 논문 개수를 구할 수 있다. (코드에서는 이를 num_c변수에 담아뒀다.)
우리는 인용횟수가 h번 이상인 논문 개수가 h개 이상일 때 h의 최댓값을 구해야한다.
--> Case 1 : 리스트 내 값(c)들을 순회하면서 c번 이상 인용된 논문 num_c가 c와 같을 경우 (즉 num_c == c)
--> Case 2 : 리스트 내 값(c)들을 순회하면서 c번 이상 인용된 논문 num_c가 c보다 큰 경우 (즉 num_c > c)
--> Case 3 : 리스트 내 값(c)들을 순회하면서 모든 c값들이 num_c보다 작아 for문을 다 돌게 되는 경우
for i, c in enumerate(citations):
num_c = i+1 # num_c : citations[i](즉 c)번 이상 인용된 논문이 i+1개이다.
if num_c == c: # c가 최댓값이 된다.
return c
elif num_c > c:
return num_c - 1
return num_c # 모든 c값들이 num_c보다 작아 for문을 다 돌게 되는 경우