✅ 이번 시간에는 이 문제를 알아보자..!
난이도는 개인적으로 쉬움!
이번시간에 확실하게 느낀건데, 어떤 문제를 읽고 파악하기까지가 늦는다...
그래서 문제와 다르게 다른 알고리즘을 짜다가 아..! 이렇게 문제가 이게 아니구나!
를 매번 늦게 파악해 ㅠㅠ
//
// main.swift
// algorithm
//
// Created by Hamlit Jason on 2021/11/16.
// https://programmers.co.kr/learn/courses/30/lessons/42583
import Foundation
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var time = 1
var middle = [Int]()
var middle_time = [Int]()
var i = 0
while true {
// 1. 다리에 트럭 넣기
if middle.reduce(0, +) <= weight {
//print("\(middle) 들어간 트럭 무게 \(truck_weights[i]) 및 시간 \(time)")
middle.append(truck_weights[i])
middle_time.append(bridge_length)
if middle.reduce(0, +) > weight {
i = i - 1
middle.removeLast()
middle_time.removeLast()
}
} else {
i = i - 1
}
// 2. 다리에 올라간 트럭 빠져나가기 로직
time = time + 1
middle_time = middle_time.map{ $0 - 1 }
//print("미들 타임 : \(middle_time), \(middle_time.first!)")
if middle_time.first == 0 {
//print("지웁니다.")
middle.removeFirst()
middle_time.removeFirst()
} else {
//print("else")
}
i = i + 1
if i >= truck_weights.count {
break
}
}
//print(middle_time)
time = time + middle_time.last!
return time
}
print(solution(2, 10, [7,4,5,6]))
print(solution(100, 100, [10]))
'알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 입국심사 43238 swift (0) | 2021.11.18 |
---|---|
[프로그래머스] 힙(Heap) 42627 Swift (0) | 2021.11.16 |
[프로그래머스] 42586 기능개발 Swift (0) | 2021.11.16 |
[프로그래머스] 행렬의 곱셈 12949 Swift (0) | 2021.11.15 |
[프로그래머스] 60057 문자열 압축 Swift (0) | 2021.11.15 |