https://school.programmers.co.kr/learn/courses/30/lessons/42583
1. Swift 풀이
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var cross = [(Int, Int)]() //(인덱스, 다리에 올라온 시간)
var next = 0 //다음에 올라올 트럭 포인터
var weightSum = 0 //다리에 올라와 있는 트럭들 무게 총합
var time = 0
repeat {
time += 1
//지난 트럭 제거
if !cross.isEmpty && cross.first!.1 + bridge_length == time {
let pass = cross.removeFirst()
weightSum -= truck_weights[pass.0]
}
//새로운 트럭 추가
if next < truck_weights.count && weightSum + truck_weights[next] <= weight {
weightSum += truck_weights[next]
cross.append((next, time))
next += 1
}
} while !cross.isEmpty
return time
}
2. Python 풀이
def solution(bridge_length, weight, truck_weights):
cross = []
next = 0
weightTotal = 0
time = 0
while True:
time += 1
# 트럭 제거
if len(cross) > 0 and cross[0][1] + bridge_length == time:
weightTotal -= truck_weights[cross[0][0]]
del cross[0]
# 트럭 추가
if next < len(truck_weights) and weightTotal + truck_weights[next] <= weight:
cross.append([next, time])
weightTotal += truck_weights[next]
next += 1
if len(cross) == 0 :
break
return time
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.01.25 |
---|---|
[프로그래머스] 베스트앨범 (1) | 2024.01.24 |
[프로그래머스] 쿼드압축 후 개수 세기 (0) | 2024.01.19 |
[프로그래머스] 기지국 설치 (0) | 2024.01.18 |
[프로그래머스] 숫자 게임 (0) | 2024.01.17 |