문제 링크 : https://leetcode.com/problems/gas-station/description/
순환 경로를 따라 n개의 가스 충전소가 있고, i번째 가스 충전소의 가스량은 gas[i]이다.
연료 탱크가 무제한인 차가 있고 i번째 가스 충전소에서 다음 (i + 1)번째 가스 충전소까지 이동하는데 가스비용 cost[i]가 든다. 가스 충전소 중 한 곳에서 빈 탱크로 여행을 시작하는데
두 개의 정수 배열(gas, cost)이 주어질 때, 시계 방향으로 순환할 수 있으면 시작 위치를, 그렇지 않으면 -1을 반환해야 하는 문제이다.
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
if sum(gas) < sum(cost):
return -1
fuel, start = 0 ,0
for i in range(len(gas)):
fuel += (gas[i]-cost[i])
if fuel < 0 :
fuel = 0
start = i + 1
return start
먄약 총 가스의 양이 총 비용보다 낮으면 어느 위치에서 출발하던지 한 바퀴를 돌 수가 없다.
이 경우 바로 -1을 return
현재 인덱스에서 다음 인덱스로 가지 못하면 fuel<0일 경우,
start를 다음 인덱스로 지정해주고 fuel은 0으로 초기화하며 탐색