728x90
https://www.acmicpc.net/problem/13335
import sys
n, w, l = map(int, sys.stdin.readline().split())
truck = list(map(int, sys.stdin.readline().split()))
time, bridge = 0, [0]*w #1
while bridge: #2
time += 1 #3
bridge.pop(0) #4
if truck: #5
if sum(bridge) + truck[0] <= l: #6
bridge.append(truck.pop(0))
else: #7
bridge.append(0)
print(time)
#1 : 시간변수와 다리의 길이를 입력받은 횟수만큼 리스트에 저장
#2 : 다리의 길이가 0이 아닐때까지 반복
#3 : time +1
#4 : 다리의 첫번째 원소 제거
#5 : bridge리스트를 추가하는건 truck리스트가 남아있을때까지
#6 : '기존 다리의 원소의 합 + 가장 왼쪽의 트럭'이 다리의 최대하중과 같거나 작다면
#7 : 조건을 만족하지 못하면 다리의 길이만 유지하기 위해 0을 삽입
다리의 하중보다 작은지를 판단하는것은 if문을 사용해서 구현할 수 있지만 다리의 거리에 따른 위치이동을 리스트 삭제로 구현하고 조건을 만족하지 못하면 트럭리스트가 남을때까지 0을 리스트 뒤에 삽입하면 반복문 한번으로 해결해주는건 생각 못했다. 다리에 입력받을 트럭의 인덱스도 어떻게 구현해야 할지 몰랐는데 트럭 리스트를 삭제하면서 맨앞 인덱스를 남겨 O(1)로 만드는것도 생각하지 못했다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 3190 파이썬(python) : 뱀 - (★) (0) | 2022.08.22 |
---|---|
[백준] 11652 파이썬(python) : 카드 (0) | 2022.08.21 |
[백준] 2161 파이썬(python) : 카드1 (0) | 2022.08.19 |
[백준] 1946 파이썬(python) : 신입 사원 - (★) (0) | 2022.08.19 |
[백준] 14501 파이썬(python) : 퇴사 - (★) (0) | 2022.08.18 |