
def solution(citations):
citations.sort(reverse=True)
for i in range(len(citations)):
if citations[i] < i + 1:
return i
return len(citations)
가장 처음 아이디어는 내림차순으로 정렬한 뒤 0번부터 i번까지 슬라이싱한 갯수를 현재값과 비교해주는 방법을 사용하려고 했는데 생각해보니 굳이 슬라이싱할 필요 없이 인덱스에 +1하면 앞에 갯수가 나오니 i+1과 비교해주었다 그래서 조건에 만족한다면 i를 출력하도록 했고 만약 for문 전체를 반복할 동안 if 조건에 맞지 않는다면 citations의 길이가 최대 조건에 부합하는 논문의 갯수이기 때문에 len(citations)를 return하도록 했다.
def solution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
다른 사람들은 어떻게 풀었는지 궁금해서 들어갔다가 정말 감탄했다... 이런 풀이 방법도 가능하구나 하는 것을 알게 되었다. 정렬 문제들이 유독 창의적으로 풀 수 있는 방법들이 있는 것 같다는 생각이 들었다.
내림차순으로 정렬하는 것 까지는 같은데 enumerate를 1부터 시작하도록 해서 각 논문의 인용마다 해당 인용보다 더 많이 인용된 논문의 갯수를 넣어주고, 인용된 눈문의 갯수와 인용된 수치 중 더 낮은 것을 list로 만든 다음 그 중에서 가장 큰 값을 return해주는 풀이 방법인데... 솔직히 처음부터 이 방법을 떠올리라면 잘 모를 것 같다... 조금 더 규칙을 찾는 연습을 해보면 좋을 것 같다.