honey_pot

[python] 입국심사 본문

문제 풀이

[python] 입국심사

_tera_ 2022. 9. 30. 01:59

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