728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/42583
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
๋ฐ์ํ
'๐ผ๐ก๐๐ค๐ง๐๐ฉ๐๐ข > ๐๐ง๐ค๐๐ง๐๐ข๐ข๐๐ง๐จ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค '๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ' ํ์ด์ฌ ํ์ด (1) | 2024.01.03 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค '๊ณผ์ ์งํํ๊ธฐ' ํ์ด์ฌ ํ์ด (0) | 2023.09.14 |
ํ๋ก๊ทธ๋๋จธ์ค ํ์๋ฒ(Greedy)'๋จ์์นด๋ฉ๋ผ' ํ์ด์ฌ ํ์ด (0) | 2023.08.30 |
ํ๋ก๊ทธ๋๋จธ์ค '์คํฌํธ๋ฆฌ' ํ์ด์ฌ ํ์ด (0) | 2023.07.10 |
ํ๋ก๊ทธ๋๋จธ์ค '[1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก' ํ์ด์ฌ ํ์ด (0) | 2023.05.26 |
๋๊ธ