๋ฌธ์
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ๋ค๋ฆฌ์๋ ํธ๋ญ์ด ์ต๋ bridge_length๋ ์ฌ๋ผ๊ฐ ์ ์์ผ๋ฉฐ, ๋ค๋ฆฌ๋ weight ์ดํ๊น์ง์ ๋ฌด๊ฒ๋ฅผ ๊ฒฌ๋ ์ ์์ต๋๋ค. ๋จ, ๋ค๋ฆฌ์ ์์ ํ ์ค๋ฅด์ง ์์ ํธ๋ญ์ ๋ฌด๊ฒ๋ ๋ฌด์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํธ๋ญ 2๋๊ฐ ์ฌ๋ผ๊ฐ ์ ์๊ณ ๋ฌด๊ฒ๋ฅผ 10kg๊น์ง ๊ฒฌ๋๋ ๋ค๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ฌด๊ฒ๊ฐ [7, 4, 5, 6]kg์ธ ํธ๋ญ์ด ์์๋๋ก ์ต๋จ ์๊ฐ ์์ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ฑด๋์ผ ํฉ๋๋ค.
0 | [] | [] | [7,4,5,6] |
1~2 | [] | [7] | [4,5,6] |
3 | [7] | [4] | [5,6] |
4 | [7] | [4,5] | [6] |
5 | [7,4] | [5] | [6] |
6~7 | [7,4,5] | [6] | [] |
8 | [7,4,5,6] | [] | [] |
๋ฐ๋ผ์, ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ค๋ฉด ์ต์ 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 ์ดํ์ ๋๋ค.
ํด์ค ์ฝ๋
def solution(bridge_length, weight, truck_weights):
# ํธ๋ญ์ ์ธ์ธ ์ ์๋ ํธ๋ญ์ ๊ฐ์๋งํผ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค.
trucks_on_bridge = [0] * bridge_length
time = 0
# ํธ๋ญ์ด ๋ค๋ฆฌ์์ ์กด์ฌํ ๋๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
while len(trucks_on_bridge) != 0:
time += 1
trucks_on_bridge.pop(0)
# ๋๊ธฐ ์ค์ธ ํธ๋ญ์ด ์กด์ฌํ๊ณ ์ฒซ ๋ฒ์งธ๋ก ๋๊ธฐ์ค์ธ ํธ๋ญ๊ณผ ํ์ฌ๊น์ง ๋ค๋ฆฌ ์์ ์๋ ํธ๋ญ์ ํฉ์ด
# weight ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ ๋ค๋ฆฌ ์๋ก ๋๊ธฐ ์ค์ธ ์ฒซ ๋ฒ์งธ ํธ๋ญ์ ๋ณด๋ด๊ณ ๋๊ธฐ ์ค์ธ ํธ๋ญ
# ๋ฐฐ์ด์์๋ ํด๋น ํธ๋ญ์ pop ํ๋ค.
if truck_weights:
if sum(trucks_on_bridge) + truck_weights[0] <= weight:
trucks_on_bridge.append(truck_weights.pop(0))
else:
trucks_on_bridge.append(0)
return time
๊ฑธ๋ฆฌ๋ ์๊ฐ (time) | ๋ค๋ฆฌ ์์ ์๋ ํธ๋ญ (trucks_on_bridge) | ๋๊ธฐ ์ค์ธ ํธ๋ญ(truck_weight) |
0 | [0,0] | [7,4,5,6] |
1 | [0] -> [0,7] | [4,5,6] |
2 | [7] -> [7,0] | |
3 | [0] -> [0,4] | [5,6] |
4 | [4] -> [4,5] | [6] |
5 | [5] -> [5,0] | |
6 | [0] -> [0,6] | [] |
7 | [6] | |
8 | [] |
๋ถ์ > ์ด ํด์ค ์ฝ๋์ ํต์ฌ ์๋ฆฌ๋ ๋ค๋ฆฌ ์์ ์ต๋๋ก ์ฌ๋ผ๊ฐ ์ ์๋ ํธ๋ญ์ ๊ฐ์๋งํผ์ ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ณ , while ๋ฌธ์ ๋๋ฉด์ ์ฒซ๋ฒ์งธ ์์๋ฅผ pop ํ๋ ๋์์ ๋๊ธฐ ์ค์ธ ์ฒซ ๋ฒ์งธ ํธ๋ญ์ด ๋ค์ด์ฌ ์ ์๋์ง ์๋์ง๋ฅผ weight๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จํ ๋ค์, ๋ค์ด์ฌ ์ ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ๋ก ๋๊ธฐ ์ค์ธ ํธ๋ญ์ ๋ค๋ฆฌ ์๋ก ๋ณด๋ด๊ณ ๊ทธ๋ ์ง ์๋ ๊ฒฝ์ฐ์๋ 0์ append ํ์ฌ ๋๊ธฐ ์ค์ธ ํธ๋ญ์ด ๋ค์ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ์๋ฆฌ์ด๋ค. ๊ฒฐ๊ตญ while ๋ฌธ ์์ฒด๋ ๋ค๋ฆฌ ์์ ์๋ ํธ๋ญ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๋น๋ฐฐ์ด์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ผ ํ๋ฉฐ, ๋ค๋ฆฌ ์์ ๋๊ธฐ ์ค์ธ ํธ๋ญ์ ๋ณด๋ผ ๋(๋ค๋ฆฌ ์์ ์๋ ํธ๋ญ ๋ฐฐ์ด์ ๋๊ธฐ ์ค์ธ ์ฒซ ๋ฒ์งธ ํธ๋ญ์ append ํ ๋)๋ ๋ฐ๋์ ๋๊ธฐ ์ค์ธ ํธ๋ญ์ด ํ๋ ์ด์ ์กด์ฌํด์ผ ํ๋ค. ์ฒ์ ์ด ์ฝ๋๋ฅผ ๋ดค์ ๋๋ ์ดํด๊ฐ ์ ๊ฐ์ง ์์์ ์ง์ ์์ผ๋ก ๋ณํ ๊ณผ์ ์ ๋ฐ๋ผ ๋ด๋ ค๊ฐ ๋ณด๋ ์ฝ๋์ ์ ๊ฐ ๊ณผ์ ์ ํ์คํ ์ดํดํ ์ ์์๋ค.
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ํ๋ฆฐํฐ (0) | 2022.04.14 |
---|---|
[Programmers] ํผ๋ณด๋์น ์ (0) | 2022.04.14 |
[Programmers] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2022.04.13 |
[Programmers] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2022.04.13 |
[Programmers] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2022.04.13 |