Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 13335. ํŠธ๋Ÿญ

deo2kim 2020. 9. 20. 09:12
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

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

 

13335๋ฒˆ: ํŠธ๋Ÿญ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ ๋‘ ์ค„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์„ธ ๊ฐœ์˜ ์ •์ˆ˜ n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, n์€ ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋Š” ํŠธ

www.acmicpc.net


๋ฌธ์ œ

๊ฐ•์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ํ•˜๋‚˜์˜ ์ฐจ์„ ์œผ๋กœ ๋œ ๋‹ค๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค. ์ด ๋‹ค๋ฆฌ๋ฅผ 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๋ฒˆ์งธ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ‘œ์ค€์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“  ํŠธ๋Ÿญ๋“ค์ด ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋Š” ์ตœ๋‹จ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•˜๋ผ.

๋ฐ˜์‘ํ˜•