일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오늘의뉴스
- MySQL
- 기사
- 20201016뉴스
- 헤드라인모음
- 20201015뉴스
- 20201018뉴스
- 경제뉴스
- 20200615뉴스
- LeetCode #Python #알고리즘 #코딩테스트 #interview
- 헤드라인
- 백준
- 알고리즘
- 파이썬
- json
- 헤드라인기사
- 크롤링
- 뉴스헤드라인
- 코테
- C++
- 20201011뉴스
- 기사헤드라인
- 20201013뉴스
- 20201017뉴스
- encoding
- 백준2225
- 뉴스
- 20200816뉴스
- 헤드라인뉴스
- Python
Archives
- Today
- Total
HelloCho
[Python] #134. Gas Station(Medium) 본문
문제
이 문제는 첫 가스탱크에 0이 있을때 어느위치에서 시작해야 한바퀴를 다 돌고 올수있는지 있다면 어느지점에서 시작해야하는지 한바퀴 못돈다면 False를 출력하는 문제이다.
처음 시도한 방법은 circle이라는 함수를 만들어서 각 index별 한바퀴를 순회할수있는지를 확인하는 방법으로 프로그램을 작성했다.
class Solution:
def canCompleteCircuit(self, gas, cost) -> int:
for i in range(len(gas)) :
if self.circle(i,gas,cost):
return i
return -1
def circle(self,index,gas,cost):
n = len(gas)
i_g = 0
j = 0
if gas[index] < cost[index]:
return False
for i in range(n+1):
if j == 0 :
pass
else:
i_g -= cost[index]
index += 1
if index == n :
index = index % n
if i_g < 0 :
return False
i_g += gas[index]
j += 1
return True
확인하는 방법은...
해당 index에서부터 한바퀴를 순회하면서 가스 채우고 cost를 빼면서 음수값이나오면 for문을 벗어난다.
결과
결과는;; 풀긴 풀었으나 엄청나게 오랜 시간이 걸린다....
고민에 고민을 했지만... 어떻게 접근해야할지 모르겠어서 고수님들의 답을 참고했다.
class Solution:
def canCompleteCircuit(self, gas, cost) -> int:
n = len(gas)
tank = 0
diffsum = 0
index = 0
for i in range(n):
tank += gas[i] - cost[i]
diffsum += gas[i] - cost[i]
if tank < 0 :
tank = 0
index = i + 1
return index if index < n and diffsum>= 0 else - 1
방식은 tank에 0, diffsum= 0, index =0으로 초기화한다.
for문을 통해 tank에 gas를 더하고 cost를 빼준다.
diffsum에도 gas와 동일하게 계산을 한다.
만약 tank의 값이 음수일경우 tank의 값을 0으로 초기화하고 index값을 i+1로 만들어준다.
결과
'코테 > LeetCode' 카테고리의 다른 글
[Python] #189. Rotate Array(easy) (0) | 2020.09.30 |
---|---|
[Python] #H-Index2(Medium) (0) | 2020.09.30 |
[Python] #274. H-Index(Medium) (0) | 2020.09.30 |
[Python] #125. Valid Palindrome(easy) (0) | 2020.09.30 |
[Python] #204. Count Primes(easy) (0) | 2020.09.30 |
Comments