반응형
programmers.co.kr/learn/courses/30/lessons/42747?language=python3
def solution(citations):
length = len(citations) # 배열의 길이
citations.sort()
for i in range(length):
if citations[i] >= length - i: return length - i # 논문이 인용된 횟수 >= 인용된 논문의 개수
return 0
먼저 citations 를 오름차순으로 정렬해줍니다. 그 다음 for문을 통해 h의 최대값을 구합니다. 오름차순으로 정렬했기 때문에 i번째 인용된 횟수는 i번째 이전의 인용된 횟수보다 클 수 밖에 없습니다. 그래서 자동적으로 나머지 논문이 h번 이하 인용되는 조건은 만족합니다. h번 이상 인용된 논문이 h편 이상인 h의 최대값을 구해야하는데 h번 이상 인용된 횟수는 citations[i]로 구할 수 있습니다. i번째 이후의 인용된 횟수는 모두 i번째 인용된 횟수보다 크므로 h번 이상 인용된 논문의 개수는 전체 논문의 개수(length) - h번 이상 인용된 횟수의 인덱스(i) 입니다.
처음에는 return citations[i] 로 했는데 채점했더니 모두 실패가 떴습니다. 그래서 다시 생각해보니 오름차순으로 정렬했기 때문에 return citations[i] 하면 h의 최소값이 구해지는 것이었습니다. 따라서 h의 최대값을 구하려면 return length - i 을 해주어야 합니다.
이 문제는 코드를 짜는 것보다 문제를 이해하는데 오래걸렸던 것 같습니다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] 모의고사 - Level1 (0) | 2021.05.15 |
---|---|
[프로그래머스/Python] 문자열 압축 (0) | 2021.05.14 |
[프로그래머스/Python] 가장 큰 수 - Level2 (0) | 2021.05.09 |
[프로그래머스/Python] K번째수 - Level1 (0) | 2021.05.09 |
[프로그래머스/Python] 실패율 (0) | 2021.05.08 |