13305 - 주유소

LeeKyoungChang·2022년 6월 6일
0

Algorithm

목록 보기
146/203
post-thumbnail

📚 13305 - 주유소

주유소

 

이해

이러한 문제를 풀 때 규칙이 있다.
매번 인덱스를 확인할 때마다 최적의 결과값인지, (문제에 따르면) 최소의 비용인지 확인하면 된다.

2 3 1 4 : 거리
3 5 2 7 5 : 비용

(1) 2 3
처음이니 2 x 3

(2) 3 5
이전 비용 3 x 3
현재 비용 3 x 5

-> 지금까지 보면 3 x 3 < 3 x 5 이므로, 이전 비용을 유지한다.

(3) 1 2
이전 비용 1 x 3
현재 비용 1 x 2

-> 지금까지 보면 1 x 3 > 1 x 2 이므로, 현재 비용으로 업데이트한다.

(4) 4 7
이전 비용 4 x 2
현재 비용 4 x 7

-> 지금까지 보면 4 x 2 < 4 x 7 이므로, 이전 비용을 유지한다.


결과 : 6 + 9 + 2 + 8 = 25

 

소스

import sys  
  
read = sys.stdin.readline  
  
n = int(read())  
  
length = list(map(int, read().split()))  
price = list(map(int, read().split()))  
  
length = length + [0]  
city = []  
  
for x, y in zip(length, price):  
    city.append([x, y])  
  
del city[len(city) - 1]  
  
answer = city[0][0] * city[0][1]  
minidx = 0  
  
for i in range(1, len(city)):  
    if city[minidx][1] * city[i][0] > city[i][0] * city[i][1]:  
        minidx = i  
        answer += city[i][0] * city[i][1]  
    else:  
        answer += city[minidx][1] * city[i][0]  
  
print(answer)

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글