๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 9. 4.
728x90
๋ฐ˜์‘ํ˜•
https://school.programmers.co.kr/learn/courses/30/lessons/42583
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

def solution(length, threshold, trucks):
    answer = 0
    bridge = [0]*length # ๋‹ค๋ฆฌ๋ฅผ ์šฐ์„  ๊ธธ์ด๋งŒํผ 0์œผ๋กœ ์„ธํŒ…
    cur_weight = 0
    trucks = trucks[::-1] 
    # trcuks.pop(0) ๋Œ€์‹  trucks.pop()์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋’ค์ง‘์–ด์คŒ
    
    while trucks: # ํŠธ๋Ÿญ์ด ๋‚จ์•„์žˆ์„๋•Œ๊นŒ์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ
        answer += 1 # ๋ฐ˜๋ณต๋ฌธ์ด ํ•œ๋ฒˆ ๋Œ๋•Œ๋งˆ๋‹ค 1์ดˆ์”ฉ ์ฆ๊ฐ€
        cur_weight -= bridge.pop(0)
        # ๋‹ค๋ฆฌ ์œ„์—์„œ ํŠธ๋Ÿญ ํ•œ๋Œ€๊ฐ€ ๋น ์ ธ ๋‚˜๊ฐ”์œผ๋‹ˆ๊นŒ ๋ฌด๊ฒŒ๋ฅผ ๋นผ์คŒ
        
        w = trucks.pop() if cur_weight + trucks[-1] <= threshold else 0
        # ๋งŒ์•ฝ ํ˜„์žฌ๋ฌด๊ฒŒ์—์„œ ํŠธ๋Ÿญ์ด ํ•œ๋Œ€ ๋” ๋“ค์–ด์™€๋„ ๋‹ค๋ฆฌ๊ฐ€ ๋ฒ„ํ‹ธ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋ณด๋‹ค
        # ์ ๋‹ค๋ฉด trucks์—์„œ ํŠธ๋Ÿญ์„ ๋‹ค๋ฆฌ์— ์ถ”๊ฐ€์‹œํ‚ค๊ณ  ์•„๋‹ˆ๋ผ๋ฉด 0์œผ๋กœ ์„ธํŒ…ํ•œ๋‹ค.
        
        cur_weight += w
        # ๋‹ค๋ฆฌ ๋ฌด๊ฒŒ์— w๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
        
        bridge.append(w)
        # ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฆฌ์— w๋ฅผ ์ถ”๊ฐ€์‹œํ‚จ๋‹ค.
        
    return answer + len(bridge) 
    # ํŠธ๋Ÿญ์ด ๋‹ค ๋‹ค๋ฆฌ์— ์˜ฌ๋ผ๊ฐ”์œผ๋ฉด ๋‹ค๋ฆฌ ๊ธธ์ด๋งŒํผ ์ดˆ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋œ๋‹ค.
    
"""
cur_weight๋กœ sum()์„ ๋Œ€์ฒดํ•˜์˜€๋‹ค.
sum์€ ๋ฆฌ์ŠคํŠธ๊ธธ์ด(O(n))๋งŒํผ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ํ•˜๋‚˜๋ฅผ ๋‘์–ด O(1)๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

trucks๋ฅผ pop(0)์„ ํ•˜์ง€ ์•Š๊ณ , pop()์„ ํ•˜๊ธฐ์œ„ํ•ด 
๋ฆฌ์ŠคํŠธ๋ฅผ ๋’ค์ง‘์–ด์ค€ ์ด์œ ๋„ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

trucks.pop(0)์€ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  pop()์€ O(1)์ด๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ํ•œ๋ฒˆ๋งŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋’ค์ง‘์–ด ์ค€๋‹ค๋ฉด ํšจ์œจ์ด ์ข‹์•„์งˆ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.
"""
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€