문제
https://school.programmers.co.kr/learn/courses/30/lessons/43238
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
이분탐색 풀이
범위 : 심사에 걸리는 최소 시간 ~ 심사에 걸리는 최대 시간 * 사람 수
mid : 임의의 시간, mid // time 은 임의의 시간동안 해당 심사대가 심사할 수 있는 사람 수를 계산한 것
기준 :
- mid 동안 심사한 사람 수(people)이 n보다 크거나 같으면 시간이 충분한 것이므로, right 조정
- mid 동안 심사한 사람 수(people)이 n보다 작으면 시간이 부족한 것이므로, left 조정
left = right 가 되는 순간 mid가 최적의 시간이다.
코드
# 임의의 시간을 구하고, 그 시간동안 몇명이 심사를 받을 수 있는 지 확인하며 이분탐색한다.
def solution(n, times):
answer = 0
left = min(times)
right = max(times) * n
while left <= right:
mid = (left + right) // 2
people = 0
for time in times:
people += mid // time
if people >= n:
break
if people >= n:
answer = mid
right = mid - 1
else:
left = mid + 1
return answer
'Algorithm > BinarySearch' 카테고리의 다른 글
99클럽 코테 스터디 2일차 TIL - 백준 11561. 징검다리 (0) | 2024.10.30 |
---|---|
99클럽 코테 스터디 1일차 TIL - 백준 1072. 게임 (1) | 2024.10.28 |
이분 탐색 (1) | 2024.10.28 |