두 정수형 벡터를 받게 되는데,
벡터에는 인덱스 기준 가스 스테이션에서 차에 채울 수 있는 가스량과
다음 가스 스테이션까지 필요한 가스량이 적혀 있다.
특정 가스 스테이션에서 시작하여 다시 시작 지점까지 돌아갈 수 있는지 판단하는 문제
돌아갈 수 없다면 -1을 반환하고 돌아갈 수 있다면 해당 인덱스를 반환해야 한다.
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int length = gas.size();
int sumGas{0};
for (int i = 0; i < length; i++)
{
sumGas += (gas[i] - cost[i]);
}
if (sumGas < 0)
{
return -1;
}
int nowGas{gas[0]};
int startPosition{0};
for (int i = 1; i < length; i++)
{
nowGas -= cost[i - 1];
if (nowGas < 0)
{
nowGas = gas[i];
startPosition = i;
continue;
}
nowGas += gas[i];
}
return startPosition;
}
};