링크 : https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
- 문제
- 소요시간: 23분 26초

- 설계하기(접근방법)
1. 입력받기
랜선 길이를 입력받는다
2. 구현하기
처음에 랜선을 못 자르는 경우가 있으면
안될 것 같다고 자의적으로 판단해서
실패했다
그러나 자르지 않고 넘어가도 된다는 것을 알고
end 값을 max(lan_list)로 정했다
start 값은 1부터 시작하면 된다
나머지 부분은
cnt에
랜선을 mid로 나눈 몫을 더해나가면서
이분 탐색을 진행해주면 된다
3. 출력하기
end를 출력한
- 코드(출력)
import sys
input = sys.stdin.readline
n, need = map(int, input().split())
lan_list = [int(input()) for _ in range(n)]
start = 1
end = max(lan_list)
while start <= end:
cnt = 0
mid = (start + end) // 2
for i in lan_list:
cnt += (i // mid)
if cnt >= need :
start = mid + 1
else:
end = mid - 1
print(end)
- 얻어갈 부분
1. 이분 탐색의 경우 지문을 주의해서 읽어야 한다
'알고리즘(백준) > 이분탐색' 카테고리의 다른 글
| [알고리즘/이분 탐색] 2343번 : 기타 레슨 - python (0) | 2024.02.11 |
|---|---|
| [알고리즘/이분 탐색] 6236번 : 용돈 관리 - python (0) | 2024.02.10 |
| [알고리즘/이분 탐색] 2805번 : 나무 자르기 - python (1) | 2024.02.10 |