이 문제는 그리디인 것을 알겠다.
지금까지 나온 최저가를 경신해가면서 다음도시까지 주유하면 된다.
어차피 더 좋은 대안이 있어도 도착해야 닿을 수 있으니 지금까지의 최대 이익만 생각하면 되는 문제라고 할 수 있다.
1. 유가경신
2다음도시 이동(거리와 곱해서 가격에 더하기)
'''
4
2 3 1
5 2 4 1
'''
n = int(input())
distance = list(map(int, input().split()))
oil_price = list(map(int, input().split()))
best_price = float('infinity')
cost = 0
for i in range(n-1):
if oil_price[i] < best_price:
best_price = oil_price[i]
cost += best_price * distance[i]
print(cost)
'Tech > Coding' 카테고리의 다른 글
C언어 고급] 🚀배열과 포인터 (0) | 2024.03.28 |
---|---|
🐨백준-파이썬] 2630번 색종이 만들기& 1780번 종이의 개수🤔분할 정복 알고리즘(Divide and conquer algorithm) (0) | 2024.03.27 |
🐨백준 파이썬]# 1541번-잃어버린 괄호(그리디 알고리즘) (0) | 2024.03.24 |
🐨알고리즘] 비트 필드를 활용한 다이나믹 프로그래밍 (1) | 2024.03.24 |
C 언어 기본] 포인터 (1) | 2024.03.23 |