https://www.acmicpc.net/problem/1654
마찬가지로 이분 탐색 문제. 이러한 유형들은 뭘 많이 자른다.
한가지 주의할 점은 랜선의 길이가 0이 되는 일은 없기 때문에 lo를 0이 아닌 1로 시작해야 한다. 안그러면 런타임 에러(ZeroDivisionError)가 뜨는데 코테에서 이에 해당하는 testcase를 주지 않으면 아무 생각 없이 지나갈 수도 있을것 같다.
주어진 테케 잘 돌아간다고 넘기지 말고 문제 조건 다시 한 번 꼼꼼히 읽어보자
K, N = map(int, input().split())
lan = list(int(input()) for _ in range(K))
lo = 1
hi = sum(lan) // N
#print(hi)
def is_possible(mid):
cnt = 0
for i in lan:
cnt += (i // mid)
return cnt >= N
ans = 0
while lo <= hi:
mid = (lo + hi) // 2
#print(lo, hi, mid)
if is_possible(mid):
lo = mid + 1
ans = mid
else:
hi = mid - 1
mid = (lo + hi) // 2
print(ans)
'ALGORITHM > BOJ' 카테고리의 다른 글
2110-공유기 (0) | 2022.05.03 |
---|---|
11663-선분 위의 점 (0) | 2022.05.03 |
2805-나무 자르기 (0) | 2022.05.02 |
10815-숫자카드 (0) | 2022.04.30 |
2512-예산 (0) | 2022.04.29 |