๐ค๋ฌธ์ ํด๊ฒฐ
S1 | ์คํ
๋๊ธฐ์ค์ธ ํธ๋ญ, ๋ค๋ฆฌ์์ ํธ๋ญ, ๋ค๋ฆฌ์์ ํธ๋ญ์ ์ง์ ์๊ฐ ์ ๊ฐ๊ฐ์ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑํ๋ค.
- ๋ค๋ฆฌ ์์ ํธ๋ญ ์ค ๊ฐ์ฅ ์์ชฝ์ ํธ๋ญ์ ์ง์ ์๊ฐ + ๋ค๋ฆฌ์ ๊ธธ์ด ๊ฐ ํ์ฌ์๊ฐ๊ณผ ๊ฐ์ผ๋ฉด
- ๊ทธ ํธ๋ญ์ ๋นผ์ค๋ค. (๋์ฐฉ)
- ๋ค๋ฆฌ ์์ ํธ๋ญ ๋ฌด๊ฒ์ ํฉ + ๋๊ธฐ ์ค์ธ ํธ๋ญ ์ค ๊ฐ์ฅ ์์ชฝ์ ํธ๋ญ ๋ฌด๊ฒ ๊ฐ ๋ค๋ฆฌ์ ํ์ค๋ณด๋ค ์์ผ๋ฉด
- ๊ทธ ํธ๋ญ์ ๋๊ธฐ์ค์ธ ํธ๋ญ์์ ๋นผ์ ๋ค๋ฆฌ์์ ํธ๋ญ์ผ๋ก ๋ฃ์ด์ค๋ค. (์ถ๋ฐ)
๐จ
๐ป์์ค ์ฝ๋
from collections import deque
def solution(n, w, L, trucks):
trucks = deque(trucks) # ๋๊ธฐ์ค์ธ ํธ๋ญ
on_the_bridge = deque() # ๋ค๋ฆฌ์์ ํธ๋ญ
departure_time_truck = deque() # ๊ฐ ํธ๋ญ์ด ๋ค๋ฆฌ์๋ก ์ฌ๋ผ๊ฐ ์๊ฐ
time = 0
while on_the_bridge or trucks:
time += 1
if on_the_bridge:
# ๋์ฐฉ์๊ฐ์ด ๋๋ฉด ํธ๋ญ ๋นผ์ค๋ค
if departure_time_truck[0] + w == time:
on_the_bridge.popleft()
departure_time_truck.popleft()
if trucks:
# ํธ๋ญ์ด ๋ค์ด๊ฐ ์๋ฆฌ๊ฐ ์์ผ๋ฉด ํธ๋ญ์ ๋ค๋ฆฌ์๋ก ๋ฃ์ด์ค
if sum(on_the_bridge) + trucks[0] <= L:
on_the_bridge.append(trucks.popleft())
departure_time_truck.append(time)
print(time)
if __name__ == "__main__":
# ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ํธ๋ญ์ ์, ๋ค๋ฆฌ์ ๊ธธ์ด, ๋ค๋ฆฌ์ ์ต๋ํ์ค
n, w, L = map(int, input().split())
# ํธ๋ญ๋ค
trucks = list(map(int, input().split()))
solution(n, w, L, trucks)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/13335
๋ฌธ์
๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ํ๋์ ์ฐจ์ ์ผ๋ก ๋ ๋ค๋ฆฌ๊ฐ ํ๋ ์๋ค. ์ด ๋ค๋ฆฌ๋ฅผ n ๊ฐ์ ํธ๋ญ์ด ๊ฑด๋๊ฐ๋ ค๊ณ ํ๋ค. ํธ๋ญ์ ์์๋ ๋ฐ๊ฟ ์ ์์ผ๋ฉฐ, ํธ๋ญ์ ๋ฌด๊ฒ๋ ์๋ก ๊ฐ์ง ์์ ์ ์๋ค. ๋ค๋ฆฌ ์์๋ ๋จ์ง w ๋์ ํธ๋ญ๋ง ๋์์ ์ฌ๋ผ๊ฐ ์ ์๋ค. ๋ค๋ฆฌ์ ๊ธธ์ด๋ w ๋จ์๊ธธ์ด(unit distance)์ด๋ฉฐ, ๊ฐ ํธ๋ญ๋ค์ ํ๋์ ๋จ์์๊ฐ(unit time)์ ํ๋์ ๋จ์๊ธธ์ด๋งํผ๋ง ์ด๋ํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ๋์์ ๋ค๋ฆฌ ์์ ์ฌ๋ผ๊ฐ ์๋ ํธ๋ญ๋ค์ ๋ฌด๊ฒ์ ํฉ์ ๋ค๋ฆฌ์ ์ต๋ํ์ค์ธ L๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ ํ๋ค. ์ฐธ๊ณ ๋ก, ๋ค๋ฆฌ ์์ ์์ ํ ์ฌ๋ผ๊ฐ์ง ๋ชปํ ํธ๋ญ์ ๋ฌด๊ฒ๋ ๋ค๋ฆฌ ์์ ํธ๋ญ๋ค์ ๋ฌด๊ฒ์ ํฉ์ ๊ณ์ฐํ ๋ ํฌํจํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ๋ค.
์๋ฅผ ๋ค์ด, ๋ค๋ฆฌ์ ๊ธธ์ด w๋ 2, ๋ค๋ฆฌ์ ์ต๋ํ์ค L์ 10, ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ ํธ๋ญ์ด ํธ๋ญ์ ๋ฌด๊ฒ๊ฐ [7, 4, 5, 6]์ธ ์์๋๋ก ๋ค๋ฆฌ๋ฅผ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๊ฑด๋๋ค๊ณ ํ์. ์ด ๊ฒฝ์ฐ ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ์ต๋จ์๊ฐ์ ์๋์ ๊ทธ๋ฆผ์์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ด 8 ์ด๋ค.
Figure 1. ๋ณธ๋ฌธ์ ์์ ๋ํด ํธ๋ญ๋ค์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ๊ณผ์ .
๋ค๋ฆฌ์ ๊ธธ์ด์ ๋ค๋ฆฌ์ ์ต๋ํ์ค, ๊ทธ๋ฆฌ๊ณ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ ํธ๋ญ๋ค์ ๋ฌด๊ฒ๊ฐ ์์๋๋ก ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ์ต๋จ์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ ๋ ์ค๋ก ์ด๋ฃจ์ด์ง๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ธ ๊ฐ์ ์ ์ n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)์ด ์ฃผ์ด์ง๋๋ฐ, n์ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ํธ๋ญ์ ์, w๋ ๋ค๋ฆฌ์ ๊ธธ์ด, ๊ทธ๋ฆฌ๊ณ L์ ๋ค๋ฆฌ์ ์ต๋ํ์ค์ ๋ํ๋ธ๋ค. ์ ๋ ฅ์ ๋ ๋ฒ์งธ ์ค์๋ n๊ฐ์ ์ ์ a1, a2, โฏ , an (1 ≤ ai ≤ 10)๊ฐ ์ฃผ์ด์ง๋๋ฐ, ai๋ i๋ฒ์งธ ํธ๋ญ์ ๋ฌด๊ฒ๋ฅผ ๋ํ๋ธ๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. ๋ชจ๋ ํธ๋ญ๋ค์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ์ต๋จ์๊ฐ์ ์ถ๋ ฅํ๋ผ.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 2410. 2์ ๋ฉฑ์์ ํฉ (0) | 2020.09.21 |
---|---|
[python] ๋ฐฑ์ค - 4883. ์ผ๊ฐ ๊ทธ๋ํ (0) | 2020.09.20 |
[python] ๋ฐฑ์ค - 2617. ๊ตฌ์ฌ ์ฐพ๊ธฐ (0) | 2020.09.19 |
[python] SWEA - 6019. ๊ธฐ์ฐจ ์ฌ์ด์ ํ๋ฆฌ (2) | 2020.09.18 |
[python] ๋ฐฑ์ค - 16953. A โ B (0) | 2020.09.18 |