저번에 다리를 지나는 트럭이랑 비슷한 느낌이다. 문제 설명이 애매모호한.
나는 처음에 문제를 잘못이해했다. 배열의 원소 하나하나를 정답이 되는 인용횟수중 하나라고 생각하고 풀었다.
근데 그게 아니었다. 그냥 1부터 세면 된다. [3,4,9,10] 배열에서 1번 이상 인용된 논문은 4개다. 그리고 1번 이하로 인용된 논문의 개수는 4개 이하이다.
1은 H-Index의 후보가 될 수 있다.
이 문제에서는 최대값을 구하면 된다.
문제 해설이 그냥 어려웠다..
처음에 이렇게 풀이했다. 아마 나처럼 문제 잘못 이해한 사람들은 다 이렇게 풀었을 것 같다.
def solution(citations):
citations.sort()
result = []
for i in citations:
if len(list(filter(lambda x: x >= i, citations))) == i:
if len(list(filter(lambda x: x <= i, citations))) == len(citations) - i + 1:
result.append(i)
if len(result) > 0:
return max(result)
else:
return 0
제대로 풀이한 내용
def solution(citations):
citations.sort()
for i in range(citations[-1], 1, -1): #최대 값임으로, 가장 큰 수부터 검사하여 확인되면 바로 리턴
if len(list(filter(lambda x: x >= i, citations))) >= i:
if len(list(filter(lambda x: x <= i, citations))) <= i:
return i
else:
return 0
어렵지는 않았다.