๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
๋ฌธ์ ์ค๋ช
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ํธ๋ญ์ 1์ด์ 1๋งํผ ์์ง์ด๋ฉฐ, ๋ค๋ฆฌ ๊ธธ์ด๋ 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 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
bridge_length / weight / truck_weights / return
2 | 10 | [7,4,5,6] | 8 |
100 | 100 | [10] | 101 |
100 | 100 | [10,10,10,10,10,10,10,10,10,10] | 110 |
def solution(bridge_length, weight, truck_weights):
time = 0
q = [0] * bridge_length
# ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ๋์
while q:
# ์๊ฐ 1์ด ์ฆ๊ฐ
time += 1
q.pop(0)
# pop(0)์ผ๋ก ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ๊บผ๋ด๊ธฐ (๋ค๋ฆฌ ํ ์นธ์ฉ ๋ฐ๋ฆผ)
if truck_weights:
if sum(q) + truck_weights[0] <= weight: # ๋ค๋ฆฌ ์ ํธ๋ญ์ด ํ๊ณ weight ์ ๋์ผ๋ฉด
q.append(truck_weights.pop(0)) # ํธ๋ญ ํ๋ ๋ ์ถ๊ฐ
else:
q.append(0) # weight ๋์ผ๋ฉด ๋ค๋ฆฌ ํ ์นธ ๋ ์ฐจ์ง
return time
# bridge_length 2
# weight 10
# truck_weights [7,4,5,6]
# return 8
์์ฒ๋ผ ๋ค๋ฆฌ length๊ฐ 2๋ผ๋ฉด, [0,0] ์๊ฐ์ 0์ด ๋ค์ด๊ฐ ๋ฆฌ์คํธ q๋ฅผ ๋ง๋ค๊ณ
[0, ํธ๋ญ] -> [ํธ๋ญ,0]-> [0,0] ์ด๋ฐ์์ผ๋ก ํธ๋ญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ๊ฒ ๊ตฌํ ํจ์ผ๋ก์จ ํด๊ฒฐํ ์ ์์๋ค.
- bridge์ ๋ค๋ฆฌ์ ๊ธธ์ด๋งํผ ์์ 0์ผ๋ก ๋ฆฌ์คํธ ์์ฑ
- ์๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด time ์์ฑ
- 1์ด๊ฐ ์ง๋ ๋๋ง๋ค ๋ค๋ฆฌ๋ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ๋ฐ๋ฆฌ๊ณ ์ด๋ฏธ ๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ํธ๋ญ์ ๋ฌด๊ฒ์ ๋ค์ ์ฌ๋ผ๊ฐ ์ฐจ๋ก์ ํธ๋ญ์ ๋ฌด๊ฒ ํฉ์ด ๋ค๋ฆฌ๊ฐ ์์ฉ ๊ฐ๋ฅํ ๋ฌด๊ฒ๋ผ๋ฉด ํธ๋ญ์ ์ฌ๋ฆผ
- ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ 0 ์ ์ถ๊ฐํ๋ฉด์ ๋ค๋ฆฌ๋ฅผ ๊ณ์ ์ผ์ชฝ์ผ๋ก ๋ฐ์ด๋
- truck_weight์ bridge๊ฐ ๋น ๋ฆฌ์คํธ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณต
๋ฐฐ์ด์
- while, if๋ฌธ์ ์กฐ๊ฑด์ list๋ฅผ ๋ฃ์ ๊ฒฝ์ฐ list๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด True, ๋น์ด ์์ผ๋ฉด False๋ก ์ฐ์ฐํจ
- append(0)ํ๋ฉด ๋งจ ๋ค์ ์ถ๊ฐ๋๊ณ
- pop(0)ํ๋ฉด ๋งจ ์์ ์์๊ฐ ๋น ์ง
'Algorithms > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๊ฒ ๋๋ฒ (DFS/BFS lv2) (0) | 2021.08.06 |
---|---|
์คํ/ํ lv2. ๊ธฐ๋ฅ ๊ฐ๋ฐ (0) | 2021.07.25 |
lv1. ์ ๊ท ์์ด๋ ์ถ์ฒ - ์ ๊ทํํ์ (0) | 2021.03.02 |
ํด์ lv3. ๋ฒ ์คํธ์จ๋ฒ (0) | 2021.02.26 |
ํด์ - lv2 ์์ฅ (1) | 2021.02.25 |