ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ
dirmathfl 2020. 10. 25. 22:36๋ฌธ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ๊ตญ์ฌ์ฌ
n๋ช ์ด ์ ๊ตญ์ฌ์ฌ๋ฅผ ์ํด ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ฐ ์ ๊ตญ์ฌ์ฌ๋์ ์๋ ์ฌ์ฌ๊ด๋ง๋ค ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ค๋ฆ ๋๋ค. ์ฒ์์ ๋ชจ๋ ์ฌ์ฌ๋๋ ๋น์ด์์ต๋๋ค. ํ ์ฌ์ฌ๋์์๋ ๋์์ ํ
programmers.co.kr
๋ฌธ์ ํ์ด
n๋ช
์ด ์
๊ตญ์ฌ์ฌ๋ฅผ ํ๋๋ฐ ์ฌ์ฌ๋์ ๋ฐ๋ผ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ ์ฌ์ฌ ๋๋ง๋ค ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ฐ๊ธฐ ๋ค๋ฅด๋ค. ์ด ๋ฌธ์ ๋ ๋ถ๋ฅ์ ๊ฐ์ด ์ด๋ถ ํ์
์ผ๋ก ํ์ด์ผ ์๊ฐ ๋ด์ ํต๊ณผ๊ฐ ๊ฐ๋ฅํ๋ค. ์ฆ, ๋ชจ๋ ์
๊ตญํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ // ๊ฐ ์ฌ์ฌ๋๋ณ ์ฌ์ฌ์๊ฐ = ์
๊ตญ์ ์
๋ฅผ ๋ง์กฑํ๋ ์ง๋ฅผ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ถ ํ์
์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
์ด๋ถ ํ์
์์๋ left
, right
๋ฅผ ์ค์ ํ์ฌ์ผ ํ๋๋ฐ ์ด๋ ๊ฐ์ฅ ์งง๊ฒ ๊ฑธ๋ฆฌ๋ ์๊ฐ 1๊ณผ, ๋ชจ๋ ์
๊ตญ์๋ค์ด ๊ฐ์ฅ ํฐ ์ฌ์ฌ๋๋ฅผ ํต๊ณผํ๋ ๊ฒฝ์ฐ ์
๊ตญ์ ์ * max(times)
๋ก ์ค์ ํ๋ฉด ๋๋ค.
์ฝ๋
def solution(n, times):
answer = 0
length = len(times)
left = 1
right = (length + 1) * max(times)
while left <= right:
mid = (left + right) // 2
cnt = 0
for time in times:
cnt += mid // time
if cnt >= n:
answer = mid
right = mid - 1
else:
left = mid + 1
return answer
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2020.10.26 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2020.10.25 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋๋์ง (0) | 2020.10.24 |
ํ๋ก๊ทธ๋๋จธ์ค: ์กฐ์ด์คํฑ (0) | 2020.10.23 |
ํ๋ก๊ทธ๋๋จธ์ค: ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2020.10.23 |