사용 언어 - Python3
문제 - 입국심사
정답
심사한 수가 n이 될 때의 특정 시간을 찾는 이분탐색 문제
(정답 맞춘 여부 X / 코드 풀이)
어떤 값(mid)을 입국심사에 걸리는 times로 나눈 몫이 총 명수가 되어야 한다. mid//time == n
구하려는 시간을 기준으로 이분탐색을 진행한다.
최소 시간(start)은 min(times), 최대시간(end)은 max(times)*n로, start와 end 중간값인 mid 부터 검사를 시작하면서 mid//time == n 이 될때까지 while 반복문을 진행한다.
# 정답
def solution(n, times):
answer = 0
start,end = min(times),max(times)*n
while start<= end:
people = 0
mid = (start+end)//2
for time in times:
people += mid//time
if people >= n:
break
if people >= n:
answer = mid
end = mid-1
elif people < n:
start = mid+1
return answer
레퍼런스
- 정답 참고
- 정답 깃허브
'Algorithm > 이분탐색' 카테고리의 다른 글
[Python3] 백준 1072번 게임 (0) | 2023.04.04 |
---|---|
[프로그래머스 lv 4] 징검다리 (0) | 2023.02.07 |
[백준] 12015번 가장 긴 증가하는 부분 수열 2 (0) | 2023.01.23 |
[백준] 1300번 K번째 수 (0) | 2023.01.21 |
[백준] 2110번 공유기 설치 (0) | 2023.01.21 |
댓글