일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 재귀
- 투포인터
- 서브쿼리
- 그리디
- 트리
- 그래프 탐색
- join
- 크루스칼
- DFS
- 다익스트라
- 우선순위큐
- 다이나믹 프로그래밍
- 수학
- 해시
- MST
- 구현
- GROUP BY
- 그래프 이론
- 다시
- 분할정복
- 백트래킹
- 시뮬레이션
- DP
- 자료구조
- 에라토스테네스의 체
- BFS
- 다이나믹프로그래밍
- 브루트포스
- 누적합
- 플로이드-워셜
- Today
- Total
기록하고 까먹지 말기
13355 본문
날짜 : 2023. 03. 09
사용 언어 : python
문제
코드
import sys
from collections import deque
n, w, L = map(int, sys.stdin.readline().split()) # 트럭수, 다리 길이, 최대하중
bridge = deque() # 다리
for i in range(w): bridge.append(0)
temp = list(map(int, sys.stdin.readline().split()))
truck = deque(temp) # 트럭 무게 입력
total = 0 # 현재 다리의 하중
res = 0
"""print(bridge)
print(truck)"""
while True:
res += 1
t = bridge.popleft() # 빠져나갈 트럭
total -= t # 무게 차감
if len(truck) > 0: # 트럭이 남아있는 경우
if (total + truck[0]) <= L: # 하중 견디는 경우
next = truck.popleft() # 진입할 트럭
bridge.append(next) # 다리에 추가
total += next # 무게 추가
else: # 하중 못버티는 경우(0 추가)
bridge.append(0)
else: # 넣을 트럭이 없는 경우
bridge.append(0)
flag = True
for i in bridge:
if i > 0:
flag = False
break
if flag: break
#print(bridge, truck)
print(res)
풀이
- 한 턴이 지나는 경우에는 다리의 가장 앞에 있는 수를 pop한 후 무게를 최신화한다. (초기화 : 0으로 채워진 리스트)
- 다리를 건너지 못한 트럭이 있는 경우 / 없는 경우로 분기
- 건너지 못한 트럭이 있는 경우 큐의 우선순위가 가장 높은 트럭을 추가했을 때 하중을 견디는 경우 / 못견디는 경우로 분기
- 견디는 경우에는 다리에 추가한 후 무게를 최신화 / 견디지 못하는 경우에는 0을 추가
- 넣을 트럭이 없는 경우에는 rear에 0을 넣고 bridge의 값이 전부 0인지 체크한다.
- 전부 0이라면 while문 탈출 후 결과 출력 / 아니라면 for문 탈출 후 다시 while문
알게된 점
- 맨 처음 bridge를 구현할 때 조금 고민했지만 트럭이 없는 케이스를 0으로 채워넣는 것으로 떠올려서 금방 문제의 실마리를 찾을 수 있었다.
- 다만 구현하는 법과 데크 사용 문법에서 버벅이는 바람에 풀이 시간을 꽤나 잡아먹은 것 같다.
참고 사이트
- 데크 사용 참고 : https://j-ungry.tistory.com/189
파이썬 collections deque 함수 (덱,데크) 사용법
https://docs.python.org/3/library/collections.html#collections.deque collections — Container datatypes — Python 3.8.5 documentation collections — Container datatypes Source code: Lib/collections/__init__.py This module implements specialized containe
j-ungry.tistory.com