def solution(citations):
    citations.sort(reverse=True)

    for h in range(1, len(citations)):
        if citations[h - 1] >= h >= citations[h]:
            return h

    if citations[-1] == 0:
        return 0

    return len(citations)


# 정확성  테스트
# 테스트 1 〉	통과 (0.08ms, 10MB)
# 테스트 2 〉	통과 (0.13ms, 10.1MB)
# 테스트 3 〉	통과 (0.12ms, 10.2MB)
# 테스트 4 〉	통과 (0.10ms, 10.1MB)
# 테스트 5 〉	통과 (0.17ms, 10.1MB)
# 테스트 6 〉	통과 (0.14ms, 10.2MB)
# 테스트 7 〉	통과 (0.06ms, 10.1MB)
# 테스트 8 〉	통과 (0.01ms, 10.1MB)
# 테스트 9 〉	통과 (0.02ms, 10.1MB)
# 테스트 10 〉	통과 (0.06ms, 10.1MB)
# 테스트 11 〉	통과 (0.16ms, 10.2MB)
# 테스트 12 〉	통과 (0.03ms, 10.2MB)
# 테스트 13 〉	통과 (0.14ms, 10.2MB)
# 테스트 14 〉	통과 (0.14ms, 10.2MB)
# 테스트 15 〉	통과 (0.15ms, 10.2MB)
# 테스트 16 〉	통과 (0.00ms, 9.99MB)
# 채점 결과
# 정확성: 100.0
# 합계: 100.0 / 100.0

assert (solution([3, 0, 6, 1, 5]) == 3)
assert (solution([0, 0, 0]) == 0)
assert (solution([0, 1, 1]) == 1)
assert (solution([0, 1, 2]) == 1)
