Skip to content

Commit 6b02c37

Browse files
committed
[BOJ] #2343.기타 레슨 / 실버1 / 60(X)
1 parent 505a225 commit 6b02c37

File tree

2 files changed

+43
-12
lines changed

2 files changed

+43
-12
lines changed

learntosurf/Binary Search/2025-01-14-[BOJ]-#1654-랜선자르기.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
K, N = map(int, input().split())
55
lan = [int(input()) for _ in range(K)]
66

7-
def binary_search(start, end):
8-
while start <= end:
9-
mid = (start + end) // 2
10-
lines = 0 # 랜선의 개수
11-
for i in lan:
12-
lines += i // mid
13-
if lines >= N: # 랜선의 개수가 많음 (랜선의 길이가 짧음)
14-
start = mid + 1
15-
else: # 랜선의 개수가 적음 (랜선의 길이가 김)
16-
end = mid - 1
17-
return end
7+
start = 1
8+
end = max(lan)
189

19-
print(binary_search(1, max(lan)))
10+
while start <= end:
11+
mid = (start + end) // 2
12+
lines = 0 # 랜선의 개수
13+
for i in lan:
14+
lines += i // mid
15+
if lines >= N: # 랜선의 개수가 많음 (랜선의 길이가 짧음)
16+
start = mid + 1
17+
else: # 랜선의 개수가 적음 (랜선의 길이가 김)
18+
end = mid - 1
19+
20+
print(end)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
N, M = map(int, input().split()) # 강의의 수, 블루레이의 수
5+
time = list(map(int, input().split())) # 강의의 길이
6+
7+
# time.sort() # 강의의 순서가 바뀌면 안됨
8+
9+
# 탐색 대상: 블루레이의 크기
10+
start = max(time)
11+
end = sum(time)
12+
13+
while start <= end:
14+
mid = (start + end) // 2
15+
16+
total = 0 # 현재 블루레이에 담은 강의 길이
17+
count = 1 # 블루레이 개수
18+
for t in time:
19+
if total + t > mid: # 블루레이의 크기를 초과하는 경우
20+
count += 1 # 블루레이 개수 증가
21+
total = 0 # 블루레이에 담은 강의 길이 초기화
22+
total += t # 블루레이에 강의 추가
23+
24+
if count <= M:
25+
answer = mid # 가능한 블루레이 크기 저장
26+
end = mid - 1
27+
else:
28+
start = mid + 1
29+
30+
print(answer)

0 commit comments

Comments
 (0)