k, n = map(int,input().split())
kLength = list()
result = list()
for i in range(k):
kLength.append(int(input()))
kLength.sort()
def binarySearch(data, n2):
low=1
# ๋์ ์ ๊ธธ์ด๋ ์์ฐ์๋ผ๊ณ ๋ช
์๋์ด์๋ค..
# ์กฐ์ฌํ์..
# low๋ฅผ 0์ผ๋ก ํด๋๊ณ ํ์ง๊ฑฐ๋ฆฌํจ..
high = data[len(data)-1] + 1
'''
4 4
100
100
100
100
๊ณผ ๊ฐ์ ์
๋ ฅ์ด ๋ค์ด์์๋ high๊ฐ๋ ํ์ ๋ฒ์์ ํฌํจ์ํค๊ธฐ ์ํด 1๋ํด์ฃผ๊ธฐ.
'''
while (low <= high):
# while ์กฐ๊ฑด์ ๋จ์ํ low ๊ฐ ์์ ๊ฒฝ์ฐ๋ก๋ง ํด์ฃผ๋ฉด high์ low๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์ ๊ฐ์ ๋น๊ต๋ฅผ ์งํํ์ง ์์
# ์ด์งํ์ ์กฐ๊ฑด์ ์ ์๊ฐํด๋ณด์. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ low <= high ์ผ๋ก ์ฌ์ฉํด๋ณด์
mid = (low + high) // 2
total = 0
for kl in data:
total += kl // mid
if total >= n2 :
result.append(mid)
low = mid + 1
else:
high = mid - 1
# mid ๊ฐ 0์ธ๊ฒฝ์ฐ ์๊ฐํด๋ณด๊ธฐ
binarySearch(kLength, n)
print(max(result))
๋ฌธ์ ํ์ด
1. ์ด๊ธฐ ์ ๋ ฅ๋ฌธ ์ฒ๋ฆฌ
2. ๊ฐ๊ฐ์ ๋์ ๊ธธ์ด๋ kLength ๋ฆฌ์คํธ์ ์ ์ฅ => ๊ทธ ํ ์ ๋ ฌ
3. ์ด์ง ํ์ ํจ์ ์์ฑ => ๊ฐ ์ค๊ฐ๊ฐ์ ๋ฐ๋ณตํ ๋๋ง๋ค ๊ทธ๋ ๊ธธ์ด๋ก ๊ฐ๊ฐ์ ๋์ ์์ ๋์ฌ ์ ์๋ ๊ฐ์๋ฅผ ๊ตฌํ๊ณ ๊ฐ์๊ฐ ๊ธฐ์ค๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ low๊ฐ์ ์ฌ๋ ค ํ์ํ๋๋ก ๊ตฌํ ์ด๋ ์กฐ๊ฑด์ ๋ง๋ ๊ธฐ์ค๊ฐ๋ค์ result ๋ฆฌ์คํธ์ append
4. binarySearch() ํจ์ ํธ์ถ
5. ๊ฒฐ๊ณผ ์ถ๋ ฅ
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 18111 ๋ง์ธํฌ๋ํํธ (0) | 2022.04.11 |
---|---|
[BaekJoon] 15829 Hashing (0) | 2022.04.11 |
[BaekJoon] 2805 ๋๋ฌด์๋ฅด๊ธฐ (0) | 2022.04.11 |
[BaekJoon] 10845 ํ (0) | 2022.04.11 |
[BaekJoon] 1081 ์ซ์ ์นด๋ 2 (0) | 2022.04.11 |