1. 문제
2. 풀이 과정
방법 1) 이진탐색을 사용한다. 최소값 즉, start = 0이고 최대는 가능한 n편의 최대가 배열의 길이이므로 end = l로 설정하였다.
def solution(citations):
citations.sort()
l = len(citations)
s = 0
e = l #최댓값
while s <= e:
m = (s+e)//2
if m==0 or (0 < m <= l and citations[l-m] >= m):
s = m+1
else:
e = m-1
return e
방법 2) 속도는 방법 1)이 이진탐색을 사용하여 더 빠르고 이 방법은 순차탐색이므로 더 느리다. 대신, 코드 측면에서 볼 때는 더 간결하다.
def solution(citations):
answer = 0
#6, 5, 3, 1, 0 :내림차순 정렬
#1, 2, 3, 4, 5 :index
answer = max(map(min, enumerate(sorted(citations, reverse = True), start = 1)))
return answer
'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글
[Python] 조이스틱 (0) | 2021.08.28 |
---|---|
[Python] 소수 찾기 (0) | 2021.08.27 |
[Python] 가장 큰 수 (0) | 2021.08.26 |
[Python] 더 맵게 (1) | 2021.08.26 |
[Python] 주식 가격 (0) | 2021.08.26 |