백준 13305번 : 주유소 (python)

Maru·2022년 7월 16일
0
post-thumbnail

1. 문제

2. 아이디어

  • 일단 첫번째 도시에선 무조건 주유를 해야한다. (그래야 두번째 도시에 갈 수 있음)
    cost[0]*distance[0] 를 더해야야한다.

  • 기름 값이 가장 저렴한 도시에서 최대한 많이 주유해야한다.

  • 아무리 기름 값이 싼 도시가 나와도, 그 전까진 약간 비싼 도시에서 주유하긴 해야한다.

  • for 문을 이용해, 지금까지의 주유 가격보다 이번 도시에서의 가격이 작다면,
    (지금 까지 왔던 거리 * 제일 작았던 주유 가격)을 곱해 결과에 더한다.

    그리고 주유 가격을 제일 작은 가격으로 바꾼다.
    (앞으로는 그 값으로 계산할거기 때문에 )

    이 과정을 코드로 나타내면 다음과 같다

    if cost[i] < min:
    	res += min * dist
        dist = road[i]
        min = cost[i]
  • 만약 그렇지 않다면? 거리에 이번 도로 거리를 축적해 더한다.
else :
	dist += roads[i]
  • 마지막 도로에서 넘어갈 때 가격을 계산한다.
    if i == n-2:
    	res += dist * min 
	

3. 코드

num = int(input()) # 도시 개수
road = list(map(int, input().split())) # 도로 거리
cost = list(map(int,input().split())) # 각 도시 기름값

res = cost[0]*road[0] # 두번 째 도시로 갈때의 비용 

min = cost[0]
dist = 0 #해당 도시 전까지의 거리 

for i in range(1,num-1): 
    if cost[i] < min:
       res += min * dist
       dist = road[i]
       min = cost[i]
    else:
        dist += road[i]
        
    if i == num-2:
        res += min*dist
       
print(res)
profile
함께 일하고 싶은 개발자

0개의 댓글