๋ฌธ์ ์ค๋ช
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ํธ๋ญ์ 1์ด์ 1๋งํผ ์์ง์ด๋ฉฐ, ๋ค๋ฆฌ ๊ธธ์ด๋ bridge_length์ด๊ณ ๋ค๋ฆฌ๋ ๋ฌด๊ฒ weight๊น์ง ๊ฒฌ๋ฅ๋๋ค. โป ํธ๋ญ์ด ๋ค๋ฆฌ์ ์์ ํ ์ค๋ฅด์ง ์์ ๊ฒฝ์ฐ, ์ด ํธ๋ญ์ ๋ฌด๊ฒ๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธธ์ด๊ฐ 2์ด๊ณ 10kg ๋ฌด๊ฒ๋ฅผ ๊ฒฌ๋๋ ๋ค๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ฌด๊ฒ๊ฐ [7, 4, 5, 6]kg์ธ ํธ๋ญ์ด ์์๋๋ก ์ต๋จ ์๊ฐ ์์ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ฑด๋์ผ ํฉ๋๋ค.
๋ฐ๋ผ์, ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ค๋ฉด ์ต์ 8์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค. solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋ค๋ฆฌ ๊ธธ์ด bridge_length, ๋ค๋ฆฌ๊ฐ ๊ฒฌ๋ ์ ์๋ ๋ฌด๊ฒ weight, ํธ๋ญ๋ณ ๋ฌด๊ฒ truck_weights๊ฐ ์ฃผ์ด์ง๋๋ค. ์ด๋ ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- bridge_length๋ 1 ์ด์ 10,000 ์ดํ์
๋๋ค.
- weight๋ 1 ์ด์ 10,000 ์ดํ์
๋๋ค.
- truck_weights์ ๊ธธ์ด๋ 1 ์ด์ 10,000 ์ดํ์
๋๋ค.
- ๋ชจ๋ ํธ๋ญ์ ๋ฌด๊ฒ๋ 1 ์ด์ weight ์ดํ์
๋๋ค.
์
์ถ๋ ฅ ์
bridge_length | weight | truck_weights |
2 | 10 | [7,4,5,6] |
100 | 100 | [10] |
๋์ ์๋ฃจ์
from collections import deque
def solution(bridge_length, weight, truck_weights):
on_bridge = deque([0 for n in range(bridge_length)])
truck_weights = deque(truck_weights)
time = 0
while True:
if truck_weights: # ๋ง์ฝ truck_weights ์ ํธ๋ญ์ด ๋จ์์๋ค๋ฉด
on_bridge.popleft()
if sum(on_bridge) + truck_weights[0] <= weight:
# ๋ค๋ฆฌ ์ ํธ๋ญ์ ๋ ์ฌ๋ฆด ์ ์์ผ๋ฉด ํ๋ ์ถ๊ฐ
on_bridge.append(truck_weights.popleft())
else:
on_bridge.append(0)
else: # ๋ง์ฝ truck_weights ์ ํธ๋ญ์ด ๋จ์์์ง ์๋ค๋ฉด
time += len(on_bridge)
break
time += 1
return time
'๐ป DEV > ใด problems' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ทธ๋ฆฌ๋(Greedy) : ์ฒด์ก๋ณต (0) | 2021.07.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ/ํ(Stack/Queue) : ์ฃผ์๊ฐ๊ฒฉ (0) | 2021.05.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ/ํ(Stack/Queue): ํ๋ฆฐํฐ (0) | 2021.05.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ/ํ(Stack/Queue): ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2021.05.07 |
[๋ฐฑ์ค] 1003๋ฒ: ํผ๋ณด๋์น ํจ์ (0) | 2021.03.11 |
๋๊ธ