<백준 13335 : 트럭> 문제풀이 with python

2024. 11. 9. 21:18·Algorithm
 
 
Today's keyword : 구현, 시뮬레이션

📌 문제설명

https://www.acmicpc.net/problem/13335

  • N개의 트럭이 있고, 각 트럭은 특정한 무게를 가지고 있습니다.
  • 다리의 길이는 W이고, 최대 하중은 L입니다.
  • 트럭은 다리를 건너야 하며, 다리 위에는 최대 W개의 트럭만 동시에 올라갈 수 있습니다.
  • 트럭이 다리를 건너는 데 걸리는 시간은 1초입니다.
  • 트럭이 다리를 건너는 동안 다리 위의 트럭의 총 무게는 최대 하중 L을 초과할 수 없습니다.
  • 모든 트럭이 다리를 건너는 데 걸리는 최소 시간을 구하는 것이 목표입니다.

 

📌 문제풀이

## 백준 : 트럭 
from collections import deque
n, w, l = map(int, input().split()) # n : 트럭 개수, w: 다리 길이, l: 최대 하중  
trunk = list(map(int, input().split()))

bridge = deque([0]*w)
i = 0
time = 0
while True: 
    
    bridge.popleft()
    if i<=len(trunk)-1:
        if (sum(bridge) + trunk[i] <= l): # 다리 위에 올라간 트럭 무게가 최대 하중보다 작거나 같으면 
            bridge.append(trunk[i])  # 새로운 트럭 추가
            i += 1 
            time += 1
        else: # 기존 트럭 이동 
            bridge.append(0)
            time += 1
    else: 
        bridge.append(0)
        time += 1

    # print(sum(bridge), bridge, i, time)
    if sum(bridge)==0: 
        print(time)
        break
  • 입력 받기: 트럭의 개수 n, 다리의 길이 w, 최대 하중 l을 입력받고, 각 트럭의 무게를 리스트로 저장합니다.
  • 다리 상태 초기화: deque를 사용하여 다리 위의 트럭 상태를 관리합니다. 초기에는 다리 위에 아무 트럭도 없으므로 [0]*w로 초기화합니다.
  • 시간 카운트: time 변수를 사용하여 경과 시간을 카운트합니다.
  • 트럭 이동 시뮬레이션:
  • 다리에서 트럭을 하나씩 빼내고(popleft), 현재 다리 위의 트럭 무게와 다음 트럭의 무게를 비교합니다.
  • 만약 다리 위의 무게와 다음 트럭의 무게를 합쳐서 최대 하중을 초과하지 않으면, 트럭을 다리에 추가하고 다음 트럭을 추가하기 위해 트럭의 인덱스를 증가시킵니다.
  • 최대 하중을 초과하면, 다리 위에 0을 추가하여 기존 트럭을 이동시킵니다.
  • 매 반복마다 시간을 1초 증가시킵니다.

5. 종료 조건: 다리 위의 모든 트럭이 다리를 건너면 시뮬레이션을 종료하고 총 시간을 출력합니다.

 

#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

'Algorithm' 카테고리의 다른 글

[TIL] 99클럽 코테 스터디 14일차 TIL - 그리디 : <백준 14916 거스름돈> 문제 풀이 with python  (1) 2024.11.10
<백준 17070 : 파이프 옮기기 1 > 문제풀이 with python  (2) 2024.11.10
[TIL] 99클럽 코테 스터디 13일차 TIL - 이진탐색 : 백준 10561 징검다리 문제 풀이 with python  (0) 2024.11.09
[TIL] 99클럽 코테 스터디 7일차 TIL - <프로그래머스 : 10561 징검다리> 문제 풀이 with python  (0) 2024.11.04
[SQL] 프로그래머스 고득점 KIT GROUP BY 문제 정답  (0) 2024.02.25
'Algorithm' 카테고리의 다른 글
  • [TIL] 99클럽 코테 스터디 14일차 TIL - 그리디 : <백준 14916 거스름돈> 문제 풀이 with python
  • <백준 17070 : 파이프 옮기기 1 > 문제풀이 with python
  • [TIL] 99클럽 코테 스터디 13일차 TIL - 이진탐색 : 백준 10561 징검다리 문제 풀이 with python
  • [TIL] 99클럽 코테 스터디 7일차 TIL - <프로그래머스 : 10561 징검다리> 문제 풀이 with python
데이by데이
데이by데이
  • 데이by데이
    Carpe Diem
    데이by데이
  • 전체
    오늘
    어제
    • 분류 전체보기 (42) N
      • AI (5)
      • 데이터분석 (5)
      • MLOps (2)
      • 프로젝트 (2)
      • Personal (5) N
      • Algorithm (12)
      • TIL (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    유전알고리즘예제
    2024 회고
    numpy
    AI
    개발책추천
    유전알고리즘개념
    과학적표기법
    change point analysis
    데이터시각화
    티스토리챌린지
    pc알고리즘
    2025 다짐
    Rag
    이상탐지
    시계열데이터분석
    change point detection
    #99클럽 #코딩테스트준비 #개발자취업 #항해99 #til
    지수표현변환
    회고
    ai대학원진학
    causal discovery
    맹그로브고성
    인과발견
    최적화알고리즘
    더나은프로그래머되는법
    변화점찾기
    LLM
    구간분할
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데이by데이
<백준 13335 : 트럭> 문제풀이 with python
상단으로

티스토리툴바