[프로그래머스] 입국심사, 파이썬
💡 문제 해결 아이디어
🛠 피드백
- 다른 사람의 풀이를 보고 해결한 문제이다!
- 문제를 다르게 해석하자면, 모든 사람들이 심사를 받는데 부족하지도, 넘치지도 않는 최적의 값을 찾는 문제이다
- 설정한 시간 동안 n명 초과의 사람을 심사했다면 너무 시간이 많은 것이고, n명 미만의 사람을 심사했다면, 너무 시간이 부족한 것이다.
- 딱 n명 심사했더라도, 몇 분 시간이 남았을 수도 있으니 시간이 많을 "수도" 있다라는 것을 생각하자.
💻 작성된 코드(수정)
def solution(n, times):
left = 1
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
- input의 최대길이가 지나치게 길고, 특정 값을 찾아야 하는 문제라면 이분탐색을 의심해보자
- 이분탐색의 전반적인 구조를 외우도록 하자 (left, right, while, for, break, if...)