https://school.programmers.co.kr/learn/courses/30/lessons/42747
💡 프로그래머스 강의노트 참고 :
https://school.programmers.co.kr/learn/courses/14743/lessons/118838
def solution(citations):
answer = []
citations.sort(reverse = True)
# hash => 논문의 인용 수를 hash에 저장
hash = {}
for i in citations:
if i not in hash:
hash[i] = 1
else:
hash[i] += 1
# 논문 인용 수가 큰 -> 작은 순서로 정렬하면, 특정 지점의 왼쪽은 모두 그 논문보다 인용 수가 큰 논문이 됨
hash = sorted(hash.items(), key = lambda x:x[0], reverse = True)
count = 0
for i in range(len(hash)):
count += hash[i][-1]
if count == hash[i][0]: # h의 최댓값을 구해야하므로, 내림차순으로 정렬한 배열의 첫 번째 값부터 인용 수가 해당 값 이상인 논문의 개수를 카운팅
answer = count
break
return answer
💡 코드 수정 시 참고하기 :
https://velog.io/@anneisa/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A42%EB%8B%A8%EA%B3%84%EC%A0%95%EB%A0%AC-H-Index