이 포스팅은 다시 풀 문제들 시리즈 5 편 중 1 번째 글 입니다.

  • Part 1 - This Post
  • Part 2 - 백준(1520번): 내리막 길
  • Part 3 - 백준(1937번): 욕심쟁이 판다
  • Part 4 - 백준(2225번): 합분해
  • Part 5 - 백준(2812번): 크게 만들기
▼ 목록 보기

목차

▼ 내리기

풀이

트리 구현을 한번도 안해보다가 처음으로 했다. 첫 시도에서는 바로 구현을 못하고 다른 코드를 참고 했다. 반복적으로 연습하면서 체득을 해야 겠다.

Code

def solution(n, times):
    
    def isOk(value):
        numOfPerson = 0
        i = 0
        while numOfPerson <= n and i < len(times):
            numOfPerson += (value//times[i])
            i += 1
    
        if numOfPerson >= n: return True
        else: return False
    
    times.sort()
    left, right = 1, times[-1]*n
    while left < right :
        
        mid = (left+right)//2
        if isOk(mid): 
            right = mid
        else: # 제안한 값이 넘치는 경우 10 > 6
            left = mid+1
    
    return right

Reference