Skip to content

Commit 24adf12

Browse files
committed
Add W21_BinarySearch
1 parent 69e11c5 commit 24adf12

File tree

4 files changed

+81
-0
lines changed

4 files changed

+81
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""
2+
BOJ #1654. ๋žœ์„ ์ž๋ฅด๊ธฐ (์‹ค๋ฒ„2)
3+
https://www.acmicpc.net/problem/1654
4+
์œ ํ˜•: Binary Search , Parameter Search
5+
"""
6+
K, N = map(int, input().split())
7+
8+
lines = [int(input()) for _ in range(K)]
9+
# 1. ๋ฒ”์œ„ ์ดˆ๊ธฐํ™”
10+
start = 1
11+
end = max(lines)
12+
#2. ์ด๋ถ„ ํƒ์ƒ‰
13+
while start <= end:
14+
mid = (start + end) // 2
15+
cnt = 0
16+
for line in lines:
17+
cnt += line // mid
18+
19+
if cnt < N:
20+
end = mid - 1
21+
else:
22+
start = mid + 1
23+
24+
print(end)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## ๐Ÿš€4์›” 4์ฃผ์ฐจ (4/28) ์Šคํ„ฐ๋”” ๋ฐœ์ œ ์ฃผ์ œ: Binary Search , Parameter Search
2+
> ๋ฐœ์ œ์ž: ๊น€ํ™์ฃผ (zaqquum)
3+
4+
> [!NOTE]
5+
> ์ฃผ์ œ: Binary Search , Parameter Searcg
6+
7+
### ๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ์ž๋ฃŒ
8+
- PDF: [๋ฐ”๋กœ๊ฐ€๊ธฐ
9+
](Study_BOJ_2110.pdf)
10+
11+
### ๐Ÿ“– ๋ฌธ์ œ
12+
- [๋ฐฑ์ค€ #2110. ๊ณต์œ ๊ธฐ์„ค์น˜](https://www.acmicpc.net/problem/2110): Binary Search , Parameter Search / ๊ณจ๋“œ 4
13+
- ์ •๋‹ต ์ฝ”๋“œ: [Study_BOJ_2110_๊ณต์œ ๊ธฐ์„ค์น˜.py](Study_BOJ_2110_๊ณต์œ ๊ธฐ์„ค์น˜.py)
14+
15+
### ๐Ÿ’ป ๊ณผ์ œ
16+
- [๋ฐฑ์ค€ #1654. ๋žœ์„  ์ž๋ฅด๊ธฐ](https://www.acmicpc.net/problem/1654): Binary Search , Parameter Search / ์‹ค๋ฒ„ 2
17+
- ์ •๋‹ต ์ฝ”๋“œ: [Assignment_BOJ_1654_๋žœ์„  ์ž๋ฅด๊ธฐ.py](Assignment_BOJ_1654_๋žœ์„ ์ž๋ฅด๊ธฐ.py)
389 KB
Binary file not shown.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
"""
2+
BOJ #2110. ๊ณต์œ ๊ธฐ์„ค์น˜ (๊ณจ๋“œ4)
3+
https://www.acmicpc.net/problem/2110
4+
์œ ํ˜•: Binary Search , Parameter Search
5+
"""
6+
import sys
7+
input = sys.stdin.readline
8+
9+
#1. ์ž…๋ ฅ ๋ณ€์ˆ˜ + ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
10+
N , C = map(int, input().split())
11+
arr =sorted([int(input()) for _ in range(N)])
12+
13+
#2. โ€œ์ตœ์†Œ ๊ฑฐ๋ฆฌ distโ€์˜ ํƒ์ƒ‰ ๋ฒ”์œ„ ์ดˆ๊ธฐํ™” # ์ด์ง„ ํƒ์ƒ‰
14+
start = 1 ; end = arr[-1] - arr[0]
15+
answer = 0 # ์ตœ์†Œ ๊ฑฐ๋ฆฌ ์ค‘ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ
16+
17+
#3.์ตœ์†Œ ์ธ์ ‘ ๊ฑฐ๋ฆฌ dist ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ
18+
#์„ค์น˜ ๊ณต์œ ๊ธฐ๋Š” dist์ด์ƒ์˜ ๊ฐ„๊ฒฉ์œผ๋กœ ์„ค์น˜
19+
while start <= end :
20+
mid = (start+end)//2
21+
cnt = 1 # arr[0]์€ ์„ค์น˜ ์‹œ์ž‘์ 
22+
23+
#[1] ์ตœ์†Œ ์ธ์ ‘ ๊ฑฐ๋ฆฌ๊ฐ€ mid ์ด์ƒ์œผ๋กœ "์ตœ๋Œ€ ์„ค์น˜ ๊ฐ€๋Šฅ ๊ณต์œ ๊ธฐ ๊ฐœ์ˆ˜๊ณ„์‚ฐ"
24+
prev = arr[0] # ์ด์ „์— ์„ค์น˜ํ•œ ๊ณต์œ ๊ธฐ ์œ„์น˜
25+
for i in range(1,N) :
26+
if arr[i] - prev >= mid : # ๊ณต์œ ๊ธฐ ๋“ฑ๋ก
27+
prev = arr[i]
28+
cnt+=1
29+
# ๊ณต์œ ๊ธฐ ๋“ฑ๋กํ•˜๊ธฐ์—” dist๋ถ€์กฑํ•œ ๊ฒฝ์šฐ -> ๋‹ค์Œ arr๋กœ ์ด๋™
30+
31+
#[2] ์ตœ์†Œ๊ฑฐ๋ฆฌ dist ์ด๋ถ„ ํƒ์ƒ‰
32+
# True ๊ฒฝ์šฐ , ์ตœ์†Œ๊ฑฐ๋ฆฌ Answer ์—…๋ฐ์ดํŠธ, ํƒ์ƒ‰ ๋ฒ”์œ„ (mid+1 : end) ์ด๋™
33+
if cnt >= C :
34+
answer = max(answer ,mid)
35+
start = mid+1
36+
# False ๊ฒฝ์šฐ: ํƒ์ƒ‰ ๋ฒ”์œ„ Lower bound๋กœ ์ด๋™(start : mid)
37+
else :
38+
end = mid - 1
39+
40+
print(answer)

0 commit comments

Comments
ย (0)