2021. 1. 19. 04:30ใ๐ Algorithm/๐ช๐ป Python ๋ฌธ์ ํ์ด
๋ฌธ์ ์ค๋ช
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ํธ๋ญ์ 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 ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์์
ํ์ด ๊ณผ์
์คํ๊ณผ ํ ๋ฒ์ฃผ์ ์๋ ๋ฌธ์ ์๋๋ฐ ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ? truck์์ ์ ค ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋๋ก ํธ๋ญ์ด ์ด๋ํ๊ฒ ๋๋ฏ๋ก deque๋ฅผ ์ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
- ๋ค๋ฆฌ๊ธธ์ด๋งํผ ์ง๋์ผํ๋ ๊ฒ์ ์ด๋ป๊ฒ ๊ตฌํํ ๊ฒ์ธ๊ฐ !?
ํ์ฌ ๋ค๋ฆฌ๋ฅผ ์ง๋๊ณ ์๋ ์ค์ธ ํธ๋ญ๋ค์ ๋ด๊ธฐ ์ํ tmp_truck์ด๋ผ๋ deque๋ฅผ ๋ง๋ค์๋ค. ์ฒ์์๋ ๋ค๋ฆฌ์ ๊ธธ์ด๋ฅผ ์๊ฐํ์ง ์๊ณ ๊ตฌํํ์ฌ ํ ์คํธ์ผ์ด์ค๋ฅผ ๋ง์ด ํ๋ ธ์๋ค. ๋ค๋ฆฌ ๊ธธ์ด๋งํผ truck์ด ์ง๋์ผํ๋ฏ๋ก ์ด๊ฑธ ์ด๋ป๊ฒ ๊ฒ์ฌํด์ผํ ๊น ๊ณ ๋ฏผํ๋ ์ค ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ณด๊ฒ๋์๋ค. ์ด๋ ์ป๊ฒ๋ ํํธ๋ tmp_truck์ ๋น ํ๊ฐ ์๋ 0์ผ๋ก ์ฑ์์ง ๋ค๋ฆฌ ๊ธธ์ด๋งํผ์ ํ๋ก ๋ง๋๋ ๊ฒ์ด์๋ค.
- sum()์ ์๊ฐ์ด๊ณผ ๋ฌธ์
sum()์ ์ฌ์ฉํ์ฌ ํ์ฌ ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ์ค์ธ ํธ๋ญ๋ค์ ํฉ์ ๊ตฌํ๋ค. ํ ์คํธ ์ผ์ด์ค 5๋ฒ์์ ๊ณ์ ์๊ฐ์ด๊ณผ๊ฐ ๋์ ์ง๋ฌธ์ ์ฐพ์๋ณด๋ sum()์ ์ฌ์ฉํ๋ ๊ฒ์ O(N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์๋ค. ๊ทธ๋์ sum์ ์ฌ์ฉํ์ง ์๊ณ ํ์ฌ ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ์ค์ธ ํธ๋ญ๋ค์ ํฉ์ ๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๋ค ์๊ฐํด๋ธ ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ tmp_truck์์ ํ๋์ฉ ๋ฃ๊ฑฐ๋ ๋บ๋ sum_truck์ ๊ฐ๋ ๋ฃ๊ฑฐ๋ ๋นผ์ฃผ๋ ๋ฐฉ๋ฒ์ด์๋ค.
from collections import deque
def solution(bridge_length, weight, truck_weights):
truck_weights = deque(truck_weights)
tmp_truck = deque([0] * bridge_length)
timer = 0
sum_truck = 0
while tmp_truck:
timer += 1
sum_truck -= tmp_truck.popleft()
if truck_weights:
if sum_truck + truck_weights[0] <= weight:
pop_truck = truck_weights.popleft()
tmp_truck.append(pop_truck)
sum_truck += pop_truck
else:
tmp_truck.append(0)
return timer
if __name__ == "__main__":
print(solution(2, 10, [7, 4, 5, 6]))
print(solution(100, 100, [10]))
print(solution(100, 100, [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]))
Python, Python ๋ฐฑ์ค, Python ๋ฐฑ์ค 18258, python ์๊ณ ๋ฆฌ์ฆ, Python ํ 2, ๋ฐฑ์ค 18258 ํ์ด์ฌ, ์๊ณ ๋ฆฌ์ฆ ํ 2, ํ์ด์ฌ, ํ์ด์ฌ ๋ฐฑ์ค, ํ์ด์ฌ ํ 2
'๐ Algorithm > ๐ช๐ป Python ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level4] ๊ฒ์ ๋งต ์ต๋จ ๊ฑฐ๋ฆฌ (0) | 2021.01.21 |
---|---|
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level2] ์ฃผ์ ๊ฐ๊ฒฉ (0) | 2021.01.19 |
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level2] ์์ฅ (0) | 2021.01.19 |