deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

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

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

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๋ฒˆ์งธ ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ถœ๋ ฅ

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

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€

'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
    'Algorithm Problem/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] ๋ฐฑ์ค€ - 2410. 2์˜ ๋ฉฑ์ˆ˜์˜ ํ•ฉ
    • [python] ๋ฐฑ์ค€ - 4883. ์‚ผ๊ฐ ๊ทธ๋ž˜ํ”„
    • [python] ๋ฐฑ์ค€ - 2617. ๊ตฌ์Šฌ ์ฐพ๊ธฐ
    • [python] SWEA - 6019. ๊ธฐ์ฐจ ์‚ฌ์ด์˜ ํŒŒ๋ฆฌ
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”