728x90
h-index 조건을 제대로 이해하는 것이 중요하겠다.
n개의 논문이 있을 때
1. h번 이상 인용된 논문의 수가 h 이상일 것
2. 그 나머지 논문의 수가 h 번 이하로 인용 되었을 것
"나머지 논문"을 잘 읽지 않고, h번 이하로 인용된 논문이 h개 이하일 것으로 생각해서 삽질 했다. ☹️
코드 자체는 위의 조건을 그대로 잘 적으면 되는 데 filter 를 사용해서 풀었다.
def solution(citations):
citations.sort()
h = citations[len(citations) // 2]
length = len(citations)
bigger_equal = len(list(filter(lambda x: x >= h, citations)))
small_equal = len(list(filter(lambda x: x <= h, citations[:length - bigger_equal])))
while not small_equal <= h <= bigger_equal:
if small_equal > h:
h += 1
elif bigger_equal < h:
h -= 1
bigger_equal = len(list(filter(lambda x: x >= h, citations)))
small_equal = len(list(filter(lambda x: x <= h, citations[:length - bigger_equal])))
return h
print(solution([3, 0, 6, 1, 5]))
# 3
print(solution([1, 1]))
# 0
print(solution([0, 1, 2, 2, 2]))
# 2
728x90
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 소수찾기 (0) | 2024.05.29 |
---|---|
프로그래머스 - 카펫 (0) | 2024.05.28 |
프로그래머스 가장 큰 수 (0) | 2024.05.26 |
LeetCode - 2336. Smallest Number in Infinite Set (0) | 2024.05.25 |
프로그래머스 디스크 컨트롤러 파이썬 (0) | 2024.05.24 |