- 정렬 문제인데 정렬로 하면 좀 복잡해지는거 같아서 이진 탐색으로 구현함.
- 최대 나올수있는 결과값을 citations의 최댓값으로 잡아두고, 절반씩 나눠가면서 h값의 조건과 맞는지 조사하고, 조건이 맞다면 결과를 저장해 둔 뒤 오른쪽 구간을 검사
- 조건이 맞지 않다면 왼쪽 구간을 검사한다.
def solution(citations):
answer = 0
visited = set()
left = 0
right = max(citations)
while left <= right:
temp = (left + right) // 2
larger = 0
for c in citations:
larger = larger + 1 if c >= temp else larger
if len(citations) - larger <= temp and temp <= larger:
answer = temp
left = temp + 1
else:
right = temp - 1
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 2 ] 괄호 회전하기 (0) | 2021.06.25 |
---|---|
[ Lv 2 ] 배달 (0) | 2021.06.25 |
[ Lv 2 ] 조이스틱 (0) | 2021.06.24 |
[ Lv 2 ] 예상 대진표 (0) | 2021.06.24 |
[ Lv 2 ] 전화번호 목록 (0) | 2021.06.23 |