-
백준 13335 트럭Algorithm/BOJ 2021. 6. 4. 15:29728x90
출처: https://www.acmicpc.net/problem/13335
분류: 구현, 시뮬레이션
접근방식
어떻게 하면 똑똑하게 풀 수 있을지 고민이 되었던 문제네요..
결국 시간을 1초씩 늘리면서 매 시간 진입, 나갈 수 있는 트럭을 체크해주면서 해결했습니다.
매 시간 늘리지 않고 의미있는 시간 단위로 체크하면서 처리하고 싶었는데... 잘 모르겠네요 😢
말씀드렸다시피 매 시간 체크를 해주기 위해
현재 시간, 다음 진입해야 할 트럭, 현재 다리 위에 달리고 있는 트럭, 다리의 무게, 각 트럭의 끝나는 시간을 기록한 배열
등을 정의했습니다.풀이는 간단합니다.
더이상 기다리고 있는 트럭이 없을 때까지 반복하는데요,현재 시간에 끝나는 트럭이 있는지 먼저 확인해서 빼주고
다음 트럭이 진입할 수 있는지 체크해서 진입과 동시에 끝나는 시간을 기록해줍니다.
그리고 시간을 늘려줍니다.첫 번째 트럭은 1초에 이미 진입했다고 가정하고 2초부터 시작해줬습니다 :)
해결방법
let input = readLine()!.split(separator: " ").map { Int(String($0))! } let (n, w, l) = (input[0], input[1], input[2]) var trucks = readLine()!.split(separator: " ").map { Int(String($0))! } var endTime = [Int](repeating: 0, count: n) endTime[0] = w+1 var loadWeight = trucks[0] var running = 0 var waitTruck = 1 var currentTime = 2 while waitTruck < n { if currentTime == endTime[running] { loadWeight -= trucks[running] running += 1 } if loadWeight + trucks[waitTruck] <= l { endTime[waitTruck] = currentTime + w loadWeight += trucks[waitTruck] waitTruck += 1 } currentTime += 1 } print(endTime.last!)
배운점
빠르고 정확하게 슈귯ㄱ
....
푸는 날까지
'Algorithm > BOJ' 카테고리의 다른 글
백준 1941 소문난 칠공주 (0) 2021.06.06 백준 2668 숫자고르기 (0) 2021.06.04 백준 2250 트리의 높이와 너비 (0) 2021.06.04 백준 1094 막대기 (비트 개수 세기) (0) 2021.06.03 백준 2056 작업 (0) 2021.06.03