honey_pot
[python] 입국심사 본문
https://school.programmers.co.kr/learn/courses/30/lessons/43238
times 배열의 순서가 오름차순이 될 수 있게 sort() <- 안 해도 통과는 된다 문제 자체에서 정렬된 배열을 주는듯
low는 가장 시간이 짧은 0번째 요소가 곧 최소 시간이 된다
high는 가장 시간이 긴 심사관이 n명을 담당했을 때 최대 시간이 된다
중간 시간값 mid를 구하고
times 배열의 시간 별로 나눠서 심사되는 사람 수를 구해서 cnt에 더한다
cnt가 n보다 크거나 작을 경우 high에 mid, 반대의 경우는 low에 mid 를 대입한다.
low == high-1 조건을 준 이유는 cnt=n 인 조건을 통과해 high에 mid 값이 대입된 순간부터 high와 low는 고정된다. 이미 값(mid)을 구했기 때문에 high에 해당하는 값을 리턴했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def solution(n, times):
answer = 0
times.sort()
low = times[0]
high = times[1] * n
while True:
cnt = 0
mid = (low + high) // 2
for time in times:
cnt += mid // time
if cnt >= n:
high = mid
elif cnt < n:
low = mid
if low == high-1:
answer = high
break
return answer
|
cs |
'문제 풀이' 카테고리의 다른 글
[python] 2885번:초콜릿 식사 (0) | 2022.10.30 |
---|---|
[Python] 1911번: 흙길 보수하기 (0) | 2022.10.30 |
[python] 디스크 컨트롤러 (0) | 2022.09.29 |
[Python] 가장 먼 노드 (0) | 2022.09.28 |
[Python] 섬 연결하기 (0) | 2022.09.28 |
Comments