ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
K๊ฐ์ ๋์ ์ด ์์ ๋, N๊ฐ์ ๋์ ์ ๋ง๋ค๊ณ ์ ํ๋ ๊ฒฝ์ฐ ๊ฐ ๋์ ์ ๊ธธ์ด๊ฐ ์ต๋๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ์ ๋ถ๋ฅ์ ๊ฐ์ด, ์ด๋ถ ํ์์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
-
์ด๋ถ ํ์์ start, mid, end๋ฅผ ํตํด ์ฐพ๊ณ ์ ํ๋ ๋ชฉํ๋ฅผ ํ์ํ ์ ์๋ค.
- start 1, end๋ ๊ฐ์ฅ ๊ธด ๋์ ์ ๊ธธ์ด๋ก ์ง์ ํ๋ค.
- mid = (start + end) // 2
- ์ฃผ์ด์ง ๋์ ๋ค์ mid๋ก ๋๋๊ณ ์ด๋ฅผ ํฉํ๋ค.
- ํฉ์ฐํ ๊ฒฐ๊ณผ๊ฐ N๊ณผ ๋น๊ตํ์ฌ ํฌ๋ค๋ฉด ํ์ ๋ฒ์์ธ s๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ ์๋ค๋ฉด e๋ฅผ 1 ๊ฐ์์ํจ๋ค.
- ์์ ๊ฐ์ ๋ก์ง์ ๋ ์ด์ ๋ฐ๋ณตํ ์ ์์ ๋๊น์ง ์งํํ๋ฉด, ๋ต์ ์ฐพ์ ์ ์๋ค.
์ฝ๋
from sys import stdin
if __name__ == '__main__':
k, n = map(int, stdin.readline().split())
lan_cables = [int(stdin.readline()) for _ in range(k)]
s, e = 1, max(lan_cables)
while s <= e:
m = (s + e) // 2
make_line = sum([line // m for line in lan_cables])
if make_line >= n:
s = m + 1
else:
e = m - 1
print(e)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2110 ๊ณต์ ๊ธฐ ์ค์น (0) | 2020.08.23 |
---|---|
๋ฐฑ์ค: 2805 ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2020.08.22 |
๋ฐฑ์ค: 2251 ๋ฌผํต (0) | 2020.08.21 |
๋ฐฑ์ค: 12886 ๋ ๊ทธ๋ฃน (0) | 2020.08.21 |
๋ฐฑ์ค: 1339 ๋จ์ด ์ํ (0) | 2020.08.20 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ