백준 13305번
https://www.acmicpc.net/problem/13305
문제
후기
보자마자 바로 풀이 방법을 떠올린 문제다.
출발하기 위해서는 무조건 처음 일단 기름을 넣어야 한다.
그리고 2번째 주유소 부터가 이 문제의 핵심인데, 만약 이 전에 있던 주유소의 기름값이
새로 방문한 주유소의 기름값 보다 싸면, 이 전의 주유소에서 미리 충전 하는것이 최소로
비용을 사용하게 되는 것이다.
이 문제를 어떻게 해결할까 생각 했더니, 그냥 단순히 새로 방문한 주유소의 기름값을
지금까지 방문한 주유소 중 가장 기름값이 쌌던 곳의 값으로 갱신 해주면 되는 것이다.
이러한 방식으로 마지막 주유소에 도착하기 전까지 갱신 해주면
원하는 답을 얻을 수 있었다.
나의 풀이
import sys
input = sys.stdin.readline
N= int(input())
dis = list(map(int,input().split()))
oil = list(map(int,input().split()))
result = 0
result += dis[0] * oil[0] #처음 움직이려면 무조건 기름을 넣고시작한다.
min_oil = oil[0] #지금까지 가장 싼 주유소를 저장할 예정
for i in range(1,N-1): #2번째 부터 마지막 주유소까지 i번째 주유소의 기름이 i+1번째 주유소 보다 싸다면, i+1번째 주유소의 기름값을 i번째 주유소의 기름값으로 바꿔둔다.
if min_oil < oil[i]:
oil[i] = min_oil
else:
min_oil = oil[i]
result += dis[i] * oil[i]
print(result)