https://programmers.co.kr/learn/courses/30/lessons/42747
처음엔 citation 인용 횟수만 고려하여 코드를 짰으나, 이렇게 하면 중간에 있는 값들을 고려해줄 수 없다. 예를 들어,
[20, 19, 18, 1] 의 인용 횟수가 있을 경우
n회 n편(h)
20 [20]
19 [20, 19]
18 [20, 19, 18]
...
1 [20, 19, 18]
이 경우 논문 편수가 3으로 h가 고정되게 되므로 h보다 큰 것을 찾으면 3회가 답안이 되어야 하나, citations 만으로 고려되면 1이 답이 된다. 이는 18과 1 사이의 값을 체크하지 않아서 그렇다..
그래서 전체를 탐색해주는 것으로 방향을 바꿨다.
def solution(c):
c = sorted(c, reverse = True)
'''
i는 논문 편수
j는 논문이 인용된 횟수
n편 중, h번 이상 인용된 논문이 h편의 이상이어야 하므로
논문의 인용 횟수가 h번 이상 인 것들의 갯수 >= h
'''
for i in range(max(c), -1, -1):
temp = []
for j in c:
if j >= i: # citations >= 현재값
#ex. 18이 현재값일 경우, temp에 [20, 19, 18]을 담아줌
temp.append(j)
if len(temp) >= i: # 3 >= 현재값이면 현재값 리턴해줌
return i