Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BOJ
- 프로그래머스
- til
- SSAFY수료식
- 브루트포스
- 코딩테스트
- BFS
- ssafy
- 자바
- 싸피
- 너비우선탐색
- 99클럽
- 백트래킹
- java
- 개발자스터디
- 깊이우선탐색
- python
- 구현
- 위상정렬
- 다이나믹프로그래밍
- DP
- 항해
- 알고리즘
- 파이썬
- 문자열
- programmers
- dfs
- 백준
- 99일지
- 삼성청년SW아카데미
Archives
- Today
- Total
EunJng
[PRO] 다리를 지나는 트럭 | Python 본문
문제
프로그래머스 코딩테스트 연습 > 스택/큐 > 다리를 지나는 트럭https://school.programmers.co.kr/learn/courses/30/lessons/42583
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
파이썬 풀이
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
truck = deque(truck_weights)
bridge = deque([0] * bridge_length)
w = 0 # bridge위의 무게
while bridge:
answer += 1
w -= bridge.popleft()
if truck:
# 무게 초과 안하면 truck[0] 다리 건너기
if w + truck[0] <= weight:
t = truck.popleft()
bridge.append(t)
w += t
# 무게 초과시 못 건너니까 0을 추가
else:
bridge.append(0)
return answer
- truck과 bridge 모두 앞에 있는 게 먼저 나가야 하므로 FIFO의 deque 사용
- 1초마다 다리의 가장 앞에 있는 트럭을 popleft()해서 없애고, 다리 위 트럭의 무게 합인 w에서 뺀다.
- 추가로 다리를 건널 수 있으면 대기 중인 트럭 중 하나를 bridge에 추가하고, w에 더해준다.
- 만약 대기 중인 트럭은 있으나 무게 초과로 건너지 못한다면 다음에 건너기 위해 0을 추가
- 만약 대기 중 트럭이 없으면 bridge에 추가하는 게 없기 때문에 bridge 위의 트럭이 다 지나갈 때까지만 while문 동작
'PROBLEM > PROGRAMMERS' 카테고리의 다른 글
[PRO] 물고기 종류 별 잡은 수 구하기 | MySQL (0) | 2024.04.08 |
---|---|
[PRO] 타겟 넘버 | Python | Java (0) | 2024.04.07 |
[PRO] 디펜스 게임 | Python (0) | 2024.04.05 |
[PRO] 무인도 여행 | Python (1) | 2024.04.03 |
[PRO] 다단계 칫솔 판매 | Python (0) | 2024.04.02 |