소스 코드
def solution(citations):
citations = sorted(citations)
answer = 0
for index, citation in enumerate(citations):
if len(citations) - index <= citation:
answer += 1
return answer
풀이
처음에는 문제 조차 이해하지 못하였지만 될때까지 파다보니 실마리를 찾았다. 문제 설명에서 H-Index에 대한 정의가 나와 있는데 나머지 논문이 몇번 인용 되었는지는 상관없이 결국에는 "h번 이상 인용된 논문이 h번 이상이다" 이 부분에만 집중하면 된거였다.
len(citations) - index <= citation 이 부분을 보자
len(citations) - index란 citations 배열을 정렬 하였으므로 index는 해당 논문의 인용 횟수가 몇번째 인지를 의미한고 len(citations) - index란 현재 citation보다 큰 논문들이 몇개 있는지를 의미한다. 따라서 len(citations) - index 보다 citation의 크기가 같거나 크다 것이 H-Index를 만족하는 상황이라는 것이다. 따라서 citations 배열을 쭉 순회하면 해당 조건에 만족하는 논문을 찾은 다음 answer 값을 1 증가시키면 해당 값이 H-Index가 된다.
'Python > 알고리즘' 카테고리의 다른 글
완전탐색 Level 2 소수 찾기 - python (프로그래머스) (0) | 2023.06.23 |
---|---|
완전탐색 Level 1 최소직사각형 - python (프로그래머스) (0) | 2023.06.23 |
힙 Level 3 이중 우선순위 큐 - python (프로그래머스) (1) | 2023.05.08 |
힙 Level 2 더 맵게 - python (프로그래머스) (0) | 2023.05.08 |
정렬 Level 2 가장 큰 수 - python (프로그래머스) (0) | 2023.05.08 |