def solution(citations):
answer = 0
citations.sort(reverse=True)
for i in range(1, len(citations)+1):
if citations[i-1] >= i:
answer = i
return answer
<문제 이해>
우리가 세어봐야할 인용수(h)의 수는 논문의 갯수가 len(citations)인 5개니, 최대 논문 인용수는 5개가 될것이고, 5회까지 인용수를 세어봐야한다.
각 논문 별 인용수가 담긴 리스트 citations = [3, 0, 6, 1, 5] 을 정렬한다.
리스트를 정렬하면 citations = [0, 1, 3, 5, 6]이 된다.
1회 이상 인용된 논문의 수(1과 같거나 큰 수)는 6,5,3,1 로 4개이다.
2회 이상 인용된 논문의 수(2와 같거나 큰 수)는 6,5,3,2 로 4개이다.
3회 이상 인용된 논문의 수(3과 같거나 큰 수)는 6,5,3 로 3개이다.
4회 이상 인용된 논문의 수(4와 같거나 큰 수)는 6,5 로 2개 이다.
5회 이상 인용된 논문의 수(5와 같거나 큰 수)는 6 으로 1개이다.
우리가 구하는 h는
"h이상 인용된 논문의 수가 h개 이상"이어야 하기 때문에. 4회(2개)와 5회(1개)는 탈락하고 나머지 1,2,3회중 가장 큰 수 인 3회가 출력 되어야한다.
인용된 논문의 수를 역으로 정렬했을 때, h회 이상 인용된 논문이 h개 이상이려면
citations[h]가 h와 같거나 이상이어야한다.
<문제 푸는 순서>
1. citations을 역으로 정렬한다.
2. for문으로 1부터 citations의 길이만큼 돌린다.
3. if문으로 만약 인덱스와 그 수가 같거나 이상이면 answer에 집어넣는다
4. answer는 매번 조건에 부합한다면 업데이트 된다.
5. 루프가 끝나면 answer가 출력된다
댓글 영역