[TIL_Carrotww] 26 - 22/10/07

์œ ํ˜•์„ยท2022๋…„ 10์›” 10์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
31/138
post-thumbnail

๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ถ„ํƒ์ƒ‰

๐Ÿ”— ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ
์ด๋ฒˆ์ฃผ ํ’€์—ˆ๋˜ ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

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]))

๐Ÿ’ก ๋Š๋‚€์ 

๐Ÿ” ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ ๋ฌธ์ œ๋Š” ์ฒ˜์Œ์— ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ํ’€์–ด, ํšจ์œจ์„ฑ์—์„œ ์‹คํŒจํ•˜์—ฌ ๋ชป ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ, ์•Œ๊ณ ๋ณด๋‹ˆ ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ์˜€์—ˆ๋‹ค. ์ด๋ถ„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋ฅผ ๋‹ค์‹œ ๋ณต๊ธฐํ•œ ํ›„ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋‹ˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์‰ฌ์› ๋‹ค.
๐Ÿ” ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ ๋ฌธ์ œ ํ›„์— ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„ ์ž…๊ตญ ์‹ฌ์‚ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค.
ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ์ง€ ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ’€์—ˆ์ง€๋งŒ ์ž…๊ตญ ์‹ฌ์‚ฌ๊ด€ ๊ฐœ๋ณ„๋กœ ์†Œ์š”์‹œ๊ฐ„์„ ์ ‘๊ทผํ•˜์—ฌ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์„ ์•Œ๊ณ ๋„ ํ’€์ง€ ๋ชปํ•œ๊ฒŒ ๋„ˆ๋ฌด ์•„์‰ฌ์› ๋‹ค ใ…  ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ๋ณต๊ธฐ ํ•˜๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€