알고리즘분류)
문제에서 요구하는 것은 n개의 배열요소 중, h이상인 값이 h개 이상이 되는 가장 최댓값을 묻는다
배열을 내림차순 정렬한 뒤 하나씩 값을 비교해 가며 배열의값과 인덱스의값을 비교하는 식으로구현했다
문제를 풀고 난 후 경우의 수를 3가지 생각할 수 있었다
예1) [1,2,3,4,5,6,7] (배열[i]값이 i값과 같은 경우)
7부터 수를 살펴보자, 7이상인 수가 7개 이상이지 않으므로 패스
그다음 6이상인 수가 6개 이상이 아니므로 패스
...
4이상인 수가 4개 이상이므로 이경우 H-Index는 4이다
예2) [1,2,5,6,7,8] (배열[i]값이 i값보다 적어지는 경우)
8이상인 수가 8개 이상이 아니므로 패스
...
2이상인 수가 2개 이상이지만 4도 만족하므로
H-Index는 4이다
예3) [10,10,10,10,10] (모든 배열[i]값이 인덱스값보다 큰 경우)
반복문을 끝까지 정상적으로 마치는 경우이다
그러므로 H-Index는 5(배열의 길이)이다
def solution(citations):
citations.sort(reverse=True)
for i in range(0,len(citations)):
if citations[i] == i+1:
return i+1
elif citations[i] < i+1:
return i
return len(citations)