
๐ค ํ์ด ์ฝ๋
def check(n, times, k):
can_enter = 0
for t in times:
can_enter += k // t
return True if can_enter >= n else False
def solution(n, times):
answer = 0
start = 0
end = min(times) * n
mid = start
while mid + 1 != end:
mid = (start + end) // 2
if check(n, times, mid):
end = mid
else:
start = mid
return end
๐ค ๋ฌธ์ ํ์ด
์ด๋ถํ์์ผ๋ก ํ์ดํด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค. ํญ์ ์ด๋ถ ํ์์ ์์์ ๊ณผ ๋์ ์ ์ก๋ ๊ธฐ์ค๊ณผ, ์ด๋ค ๊ฒ์ ์ด๋ถํ์์ ์ฌ์ฉํด์ผ ํ ์ง ํ๋จํ๋๊ฒ ์ด๋ ต๋ค์.
์ด ๋ฌธ์ ์์ ์ด๋ถํ์์ ๋์์, ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ด๋ถํ์์ ๋์์ผ๋ก ์ผ์ต๋๋ค.
๋์ฌ ์ ์๋ ์ต๋ ์๊ฐ์, ๊ฒ์ฌ๊ด ์ค ๊ฐ์ฅ ์งง๊ฒ ๊ฑธ๋ฆฌ๋ ๊ฒ์ฌ๊ด์์ N ๋ช ์ด ๋ชจ๋ ๋ฐ๋ ์ผ์ด์ค๊ฐ ๋ ์ ์๊ฒ ๋ค์.
๊ทธ๋์ start์ end๋ฅผ ๊ฐ๊ฐ 0, min(times) * n์ผ๋ก ์ก์์ต๋๋ค.
์ด๋ถ ํ์์ ํตํด mid๋ฅผ (start + end) // 2๋ก ์ค์ ํ ํ, check ํจ์๋ฅผ ํตํด ์ด๋ถํ์์ ๋ฒ์์ ์์ ์ค์ผ์ง, ๋ค๋ฅผ ์ค์ผ์ง ๊ฒฐ์ ํฉ๋๋ค.
check ํจ์๋ k ์๊ฐ๋์, times์ ๊ฐ๋ ๊ด๋ค์ด ๊ฐ๊ฐ ์ ๊ตญ ์ฌ์ฌ๋ฅผ ์งํํ ์ ์๋ ์์ ๋ชจ๋ ๋ํ ๊ฐ์ ๋ฐํ์ผ๋ก, ์ฃผ์ด์ง n๋ช ์ด์์ ์ฑ์ ๋์ง ๋ชป์ฑ์ ๋์ง์ ๋ฐ๋ผ True์ False๋ฅผ ๊ฒฐ์ ํ๋ ํจ์์ ๋๋ค.
๋ง์ฝ ์ฑ์ ๋ค๋ฉด, mid ๊ฐ์ ์ข ๋ ์ค์ด๊ธฐ ์ํด end๋ฅผ mid ํฌ์ง์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
n๋ช ์ ๋ค ๋ชป ์ฑ์ ๋ค๋ฉด ์๊ฐ์ ์ข ๋ ๋๋ฆฌ๊ธฐ ์ํด start๋ฅผ mid ํฌ์ง์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (level2, python) (0) | 2023.04.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฉ์ฉกํ ์ฌ๊ฐํ (level2, python) (0) | 2023.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก (level3, python) (1) | 2023.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋์คํฌ ์ปจํธ๋กค๋ฌ (level3, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (level2, python) (0) | 2023.04.10 |