[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ/ํ : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
๋ฌธ์ ์ค๋ช
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ๋ค๋ฆฌ์๋ ํธ๋ญ์ด ์ต๋ 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 ์ดํ์ ๋๋ค.
์ ๋ต
from collections import deque
def solution(bridge_length, weight, truck_weights):
if sum(truck_weights) <= weight:
return bridge_length + len(truck_weights)
truck_weights = deque(truck_weights) # ํธ๋ญ ๋ณ ๋ฌด๊ฒ ๋ฆฌ์คํธ deque๋ก ๋ณ๊ฒฝ
on_bridge = deque([0]*bridge_length) # ๋ค๋ฆฌ์ ์ฌ๋ผ๊ฐ ์ ์๋ ํธ๋ญ ์ ๋งํผ deque ์์ฑ
cnt_time = 0 # ์๊ณ
sum_weight = 0 # ๋ค๋ฆฌ์ ์ฌ๋ผ์์๋ ํธ๋ญ ๋ฌด๊ฒ ํฉ
while truck_weights: # ์ฌ๋ผ๊ฐ ํธ๋ญ์ด ๋จ์ ์๋ค๋ฉด
cnt_time += 1 # ์๊ฐ ์ฆ๊ฐ
out = on_bridge.popleft()
sum_weight -= out
if sum_weight + truck_weights[0] <= weight: # ๋ค๋ฆฌ์ ํธ๋ญ์ด ์ฌ๋ผ๊ฐ ์ ์์ผ๋ฉด
truck = truck_weights.popleft()
on_bridge.append(truck) # ๋ค๋ฆฌ์ ํธ๋ญ ์ถ๊ฐ
sum_weight += truck # ํธ๋ญ ๋ฌด๊ฒ ํฉ ์ถ๊ฐ
else:
on_bridge.append(0)
return cnt_time + bridge_length
์ฐ์ํด์ ๋ชจ๋ ํธ๋ญ์ด ์ฌ๋ผ๊ฐ๋ ๊ฒฝ์ฐ๋
๋ค๋ฆฌ์ ๊ธธ์ด bridge_length + ํธ๋ญ์ ๊ฐ์ len(truck_weights) ๋ฅผ return ํ๋ฉด ๋๋ค.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ,
์ฌ๋ผ๊ฐ ํธ๋ญ์ด ๋จ์์๊ณ ์๋ก์ด ํธ๋ญ์ด ๋ค๋ฆฌ์ ์ถ๊ฐ๋์ด๋ ๊ฐ๋ฅํ ์ํฉ์์
ํธ๋ญ๋ณ ๋ฌด๊ฒ๊ฐ ์ ์ฅ๋ truck_weight์์ ํ๋์ฉ ๊บผ๋ด on_bridge์ ์ถ๊ฐํ๋ค.
on_bridge๋ ๋ค๋ฆฌ ์์ ์ํฉ์ ์๋ฏธํ๋ ๋ฆฌ์คํธ๋ก ์ด๊ธฐ๊ฐ์ [0]*๋ค๋ฆฌ์ ๊ธธ์ด bridge_length์ด๋ค.
๋ง์ง๋ง์ cnt_time์ bridge_length๋ฅผ ๋ํด์ฃผ๋ ์ด์ ๋
๋ง์ง๋ง์ ์ฌ๋ผ์จ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๋ค ์ง๋๊ฐ ์๊ฐ์ ๋ํด์ฃผ์ด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/python] ํด์ : ๋ฒ ์คํธ์จ๋ฒ (0) | 2021.07.26 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ/ํ : ์ฃผ์๊ฐ๊ฒฉ (0) | 2021.07.21 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ/ํ : ํ๋ฆฐํฐ (0) | 2021.07.19 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] 2021 KAKAO BLIND RECRUITMENT : ๋ฉ๋ด ๋ฆฌ๋ด์ผ (0) | 2021.07.02 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ : ํํ (0) | 2021.07.02 |