#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int main(void)
{
int countCity;
cin >> countCity;
vector<int> road(countCity - 1);
for (int i = 0; i < countCity - 1; i++)
cin >> road[i];
vector<int> priceOil(countCity);
for (int i = 0; i < countCity; i++)
cin >> priceOil[i];
long long minimumCost = 0;
int currentOilPrice = 0;
for (int i = 0; i < countCity - 1; i++) //마지막은 할 필요 없음
{
if (i == 0) currentOilPrice = priceOil[0];//맨처음은 무조건 이가격에 사야댐
else//만약, 더 싼 가격이 나오면 더 싼가격으로 바꿔서 간다. //더 싼 가격이 안나오면 기존의 가격을 유지한다
{
if (priceOil[i] < currentOilPrice) currentOilPrice = priceOil[i];
}
minimumCost += ((long long)currentOilPrice * road[i]); //더싼 가격 나오면 바꿔가고, 안나오면 기존 가격 유지한다.
}
cout << minimumCost;
return 0;
}
이 문제 못풀었다.
중간에중요한 아이디어가,
1. 맨끝은 포함하지 않고
2. 만약 더 싼 가격이 나온다면 교체하고 가고
더 싼 가격이 안나오면 기존의 가격으로 진행하는
2번내용 풀이 이해하기,