forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path3.py
More file actions
30 lines (26 loc) ยท 1.12 KB
/
3.py
File metadata and controls
30 lines (26 loc) ยท 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# ์ง์ ๊ฐ์(N)์ ๊ณต์ ๊ธฐ์ ๊ฐ์(C)๋ฅผ ์
๋ ฅ ๋ฐ๊ธฐ
n, c = list(map(int, input().split(' ')))
# ์ ์ฒด ์ง์ ์ขํ ์ ๋ณด๋ฅผ ์
๋ ฅ ๋ฐ๊ธฐ
array = []
for _ in range(n):
array.append(int(input()))
array.sort() # ์ด์ง ํ์ ์ํ์ ์ํด ์ ๋ ฌ ์ํ
start = 1 # ๊ฐ๋ฅํ ์ต์ ๊ฑฐ๋ฆฌ(min gap)
end = array[-1] - array[0] # ๊ฐ๋ฅํ ์ต๋ ๊ฑฐ๋ฆฌ(max gap)
result = 0
while(start <= end):
mid = (start + end) // 2 # mid๋ ๊ฐ์ฅ ์ธ์ ํ ๋ ๊ณต์ ๊ธฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ(gap)์ ์๋ฏธ
# ์ฒซ์งธ ์ง์๋ ๋ฌด์กฐ๊ฑด ๊ณต์ ๊ธฐ๋ฅผ ์ค์นํ๋ค๊ณ ๊ฐ์
value = array[0]
count = 1
# ํ์ฌ์ mid ๊ฐ์ ์ด์ฉํด ๊ณต์ ๊ธฐ๋ฅผ ์ค์นํ๊ธฐ
for i in range(1, n): # ์์์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค์น
if array[i] >= value + mid:
value = array[i]
count += 1
if count >= c: # C๊ฐ ์ด์์ ๊ณต์ ๊ธฐ๋ฅผ ์ค์นํ ์ ์๋ ๊ฒฝ์ฐ, ๊ฑฐ๋ฆฌ๋ฅผ ์ฆ๊ฐ์ํค๊ธฐ
start = mid + 1
result = mid # ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
else: # C๊ฐ ์ด์์ ๊ณต์ ๊ธฐ๋ฅผ ์ค์นํ ์ ์๋ ๊ฒฝ์ฐ, ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์์ํค๊ธฐ
end = mid - 1
print(result)