정렬문제! 카테코리가 정렬이 아니였으면 정렬로 안풀었을듯.. ㅎ 정렬로 푸니까 빠르긴 한거같다!!
근데 문제가,, 이해하기 어려웠음 ㅠㅠ
내 코드
def solution(citations):
answer = []
citations.sort()
index=0
for i in range(len(citations)+1):
index=0
for j in citations:
if i<=j:
break
else:
index+=1
more = len(citations) - index
if more >= i:
answer.append(i)
return max(answer)
논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값을 구해야한다.
여기서 정렬을 사용하지 않았으면 h번 이상 인용된 논문을 cnt를 사용해서 구했을텐데.,,. 정렬을 사용해서 index를 구하여서 풀었다. 아직 남 코드를 안봐서 이 풀이가 좋은 풀이인지는 모르겠지만,. 일단 설명하겠다.
인용이 0이상 일때, 1이상일때.. 이렇게 구했기 때문에 for문을 사용하여 i를 배열의 길이까지 돌려준다.
배열에 있는 원소가 i가 커지는 순간이 index이다. 이 index를 기준으로 배열의 오른쪽은 i(인용 횟수)이상, 왼쪽은 나머지 논문이다.
즉, i번 이상 인용된 논문의 수는 배열의 길이에서 index를 뺀 값이고 이것을 more이라고 하였다.
나머지 논문은 자동으로 h번 이하의 논문만 남는다.
more이 i(인용횟수) 이상이면 answer에 추가하고 answer배열의 max를 반환한다.
다른사람 코드
def solution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 모의고사 (0) | 2021.09.03 |
---|---|
[프로그래머스] 위클리 챌린지 2주차 상호평가 작성중 (0) | 2021.08.24 |
[프로그래머스] 실패율 (0) | 2021.08.11 |
[코드업] 파이썬 기초 100제 91~100 (0) | 2021.08.06 |
[코드업] 파이썬 기초 100제 81~90 (0) | 2021.08.06 |