๐ ํ๋ก๊ทธ๋๋จธ์ค ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ
์ด๋ฒ์ฃผ ํ์๋ ์ด๋ถํ์ ๋ฌธ์ ๋ฅผ ์ ๋ฆฌํด ๋ณด์๋ค.def solution(stones, k): left, right = 1, 200000 while left <= right: mid = (left + right) // 2 cnt = 0 for st in stones: if st - mid <= 0: cnt += 1 else: cnt = 0 if cnt >= k: break if cnt >= k: right = mid - 1 else: left = mid + 1 return left
๐ ํ๋ก๊ทธ๋๋จธ์ค ์ ๊ตญ ์ฌ์ฌ
def solution(n, times): result = 0 left, right = min(times), max(times) * n while left <= right: mid = (left + right) // 2 cnt = 0 for ti in times: cnt += mid // ti if cnt >= n: break if cnt >= n: result = mid right = mid - 1 else: left = mid + 1 return result print(solution(6, [7, 10]))
๐ ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ๋ ์ฒ์์ ๋ธ๋ฃจํธํฌ์ค๋ก ํ์ด, ํจ์จ์ฑ์์ ์คํจํ์ฌ ๋ชป ํ์๋ ๋ฌธ์ ์ธ๋ฐ, ์๊ณ ๋ณด๋ ์ด๋ถํ์ ๋ฌธ์ ์์๋ค. ์ด๋ถํ์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์๋ฅผ ๋ค์ ๋ณต๊ธฐํ ํ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฌธ์ ์ ๋ํ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ธฐ ์ฌ์ ๋ค.
๐ ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ํ์ ์ด๋ถํ์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ๊ตญ ์ฌ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค.
ํด๋น ๋ฌธ์ ๋ ์ด๋ถํ์์ผ๋ก ์ ๊ทผํด์ผ์ง ํ๊ณ ์๊ฐํ๋ฉฐ ํ์์ง๋ง ์ ๊ตญ ์ฌ์ฌ๊ด ๊ฐ๋ณ๋ก ์์์๊ฐ์ ์ ๊ทผํ์ฌ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ธฐ๊ฐ ์ฝ์ง ์์๋ค. ์ ๊ทผ ๋ฐฉ์์ ์๊ณ ๋ ํ์ง ๋ชปํ๊ฒ ๋๋ฌด ์์ฌ์ ๋ค ใ ํ์๋ ๋ฌธ์ ๋ค์ ๋ณต๊ธฐ ํ๊ณ ๋ค์ ํ์ด๋ด์ผ๊ฒ ๋ค.