ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ
dirmathfl 2020. 10. 25. 22:36728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
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
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2020.10.26 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2020.10.25 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋๋์ง (0) | 2020.10.24 |
ํ๋ก๊ทธ๋๋จธ์ค: ์กฐ์ด์คํฑ (0) | 2020.10.23 |
ํ๋ก๊ทธ๋๋จธ์ค: ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2020.10.23 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ