문제 풀이
k, n = map(int,input().split())
line = [int(input()) for _ in range(k)]
lt = 1
rt = max(line)
res = 0
while lt <= rt:
mid = (lt + rt) // 2
s = 0
for i in line:
s += i//mid
if s >= n:
lt = mid + 1
res = mid
else:
rt = mid - 1
print(res)
- 이 경우엔 길이가 더 작아도 나누면 0이기 때문에 조건에 상관 없이 s 값을 전부 다 구해서 원하는 랜선 갯수가 나오는지 확인한다.
- 랜선 갯수가 더 많은 경우여도 같은 경우로 생각하기 때문에 계속해서 살펴보며 진행한다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][스택] - 2493. 탑 (0) | 2022.07.15 |
---|---|
[백준][이분 탐색] - 10815. 숫자 카드 (0) | 2022.07.08 |
[백준][이분 탐색] - 2805. 나무 자르기 (0) | 2022.07.08 |
[백준][수학] - 24480. 알고리즘 수업 - 깊이 우선 탐색 2 (0) | 2022.05.19 |
[백준][수학] - 17496. 스타후르츠 (0) | 2022.05.02 |