n회 이상 인용된 n개 논문의 최대 개수 파악
알고리즘: ?
class Solution:
def hIndex(self, citations: List[int]) -> int:
citations.sort()
for i in range(len(citations)):
if citations[i] >= len(citations) - i:
return len(citations) - i
return 0
처음엔 문제 자체를 이해 못해서 헤맸다..
예제를 더 찬찬히 뜯어봐야 할듯.
리트코드는 문제 해석부터 문제다.
아무튼! 이번 문제에서 중요했던 것은 n번 인용된 횟수 >= n번 이상 인용된 논문의 갯수
였다.
따라서 오름차순 정렬이 필요하다고 생각했고,
배열을 순회하며 나의 값
이 남은 배열의 길이
보다 클 때 그 남은 배열의 길이가 답이 되도록 했다.
오름차순 정렬시 나의 뒤는 무조건 나와 같거나 나보다 클 것이기 때문에,
n번 이상이 보장되어 있으므로, 남은 배열의 길이가 결국 n번 이상 인용된 논문의 갯수이기 때문이다.
class Solution:
def hIndex(self, citations: List[int]) -> int:
citations.sort(reverse=True)
if (citations[0] == 0):
return 0
if citations[-1] >= len(citations):
return len(citations)
for i in range(len(citations)):
if citations[i] < i + 1:
return i
return 0
이렇게 내림차순 방식으로도 정렬이 가능하다.