문제: https://leetcode.com/problems/gas-station/
전체 기름의 양 < 전체 비용일 경우 반드시 모든 주유소를 방문할 수 있습니다.
O(n)으로 돌며 성립되지 않는 지점이 있다면 출발점을 그 다음 지점으로 갱신합니다.
import Foundation
class Solution {
func canCompleteCircuit(_ gas: [Int], _ cost: [Int]) -> Int {
if gas.reduce(0, +) < cost.reduce(0, +) {
return -1
}
var start = 0, fuel = 0
for i in 0..<gas.count {
if gas[i] + fuel < cost[i] {
start = i + 1
fuel = 0
} else {
fuel += gas[i] - cost[i]
}
}
return start
}
}
print(Solution().canCompleteCircuit([1,2,3,4,5], [3,4,5,1,2])) // 3
print(Solution().canCompleteCircuit([2,3,4], [3,4,3])) // -1
'알고리즘' 카테고리의 다른 글
[Swift] 프로그래머스 - 카카오 다트 게임 (0) | 2022.02.28 |
---|---|
[Swift] 4가지 방법의 피보나치 함수 (0) | 2022.02.28 |
[Swift] LeetCode - 136. Single Number (0) | 2022.02.17 |
[Swift] LeetCode - 1038. Binary Search Tree to Greater Sum Tree (0) | 2022.02.17 |
[Swift] LeetCode - 297. Serialize and Deserialize Binary Tree (0) | 2022.02.17 |
댓글