42583. ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
---|---|---|---|
์คํ, ํ | lv.2 | 2์๊ฐ | โ |
#
์ค๊ณ ๋ฐฉ๋ฒ๋ค๋ฆฌ์ ๊ธธ์ด๋ฅผ ๊ณ ์ ๊ธธ์ด๋ก ๊ฐ์ง๋ ํ(ย
onBridge
ย )๋ฅผ ๋ง๋ฌ.Array๋ฅผ ํ๋ก ์ฌ์ฉํ๊ณ index๋ฅผ ์ด๋์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก (
shift
ย ์ฐ์ฐ์ ์๊ฐ๋ณต์ก๋๋ฌธ์ ํด๊ฒฐ)time
ย ์ ํ์ head index๋ก ์ฌ์ฉ
overBridge
ย ์ ๋ชจ๋ ํธ๋ญ์ด ๋์ฐฉํ ๋ ๊น์ง ์๊ฐ์ ์ฆ๊ฐ์ํค๊ณ ยonBridge
ย ํ์ํธ๋ญ์ ๋ด์๊ฐ๋ฉฐ ์งํonBridgeWeight
ย ๋ฅผ ๋ฐ๋ณต๋ฌธ ๋ด์์ ๊ณ์ฐ
#
์ฝ๋function solution(birdge_length, weight, truck_weights) { const onBridge = Array.from({length: birdge_length}, () => null); const overBridge = []; let onBridgeWeight = 0; let time = 0;
let waitingTruckIndex = 0; while (overBridge.length !== truck_weights.length) { const truck = onBridge[time]; time++;
if (truck) { overBridge.push(truck); onBridgeWeight -= truck; }
if ( onBridgeWeight + truck_weights[waitingTruckIndex] > weight || waitingTruckIndex >= truck_weights.length ) { onBridge[time + birdge_length - 1] = null; continue; }
onBridge[time + birdge_length - 1] = truck_weights[waitingTruckIndex]; onBridgeWeight += truck_weights[waitingTruckIndex]; waitingTruckIndex++; }
return time;}
#
์๊ฐ ๋ณต์ก๋- O(n), time ๋งํผ ๋ฐ๋ณต๋ฌธ ์ฐ์ฐ
#
์ด๋ ค์ ๋ ์ ์ฒ์์ ๋ฌธ์ ๋ฅผ ์๋ชป ์ดํดํด์ ์ฃผ์ด์ง truck_weights ๋ฐฐ์ด์ ๋ณด๊ณ ์ต์ ์๊ฐ์ ์ฐพ์๋ด์ผ๋๋ ๊ฑธ๋ก ์ฐฉ๊ฐํจ.
JS์์ ํ๋ฅผ ์ฐ๋๊ฒ ๋๋ฌด ๋ถํธํจ