728x90


파이썬

 

실3 랜선 자르기


맞은 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def calcLan(divisor):
    sum = 0
    for i in lan:
        sum += i // divisor
    return sum
def biSearch(start, end):
    if start >= end:
        print(start-1)
        return
    mid = (start+end)//2
    if calcLan(mid) < N:
        biSearch(start, mid)
    else:
        biSearch(mid+1, end)
K, N = map(int, input().split())
lan = []
for _ in range(K):
    lan.append(int(input()))
biSearch(0, max(lan)+1)
cs


start와 end가 0, 1일 때 mid가 0이 되어버리는 문제가 있는데 end에 1을 더해줘서 이를 해결하였고 대신 start를 출력할 때 1을 빼준다.

생각보다 이분탐색이 쉽지 않음을 느꼈다.

5번 시도해서 겨우 성공했다.


728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기