반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42583
풀이
import Foundation
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var time = 0
var bridge = Array(repeating: 0, count: bridge_length)
var trucks = truck_weights
var w = 0
while !bridge.isEmpty {
w -= bridge.removeFirst()
time += 1
if bridge.count < bridge_length {
if let t = trucks.first {
if t + w <= weight {
w += trucks.removeFirst()
bridge.append(t)
} else {
bridge.append(0)
}
}
}
}
return time
}
- 무게합을 reduce를 사용하지 않고 구하는 방법을 떠올리지 못해서 시간초과가 났던 문제이다.
- 하나씩 돌리면서 w를 더하고 빼주는 방식을 채택하면 매번 reduce를 통해 무게합을 계산할 필요가 없다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 전력망을 둘로 나누기 (프로그래머스 lv2, 스위프트) (0) | 2022.04.27 |
---|---|
[알고리즘 연습] 방금그곡 (프로그래머스 lv2, 스위프트) (0) | 2022.04.23 |
[알고리즘 연습] 메뉴 리뉴얼 (프로그래머스 lv2, 스위프트) (0) | 2022.02.24 |
[알고리즘 연습] 양궁대회 (프로그래머스 lv2, 스위프트) (0) | 2022.02.22 |
[알고리즘 연습] 조이스틱 (프로그래머스 lv2, 스위프트) (1) | 2022.02.17 |