#include <iostream>
using namespace std;
int main(){
long long price = 0;
long long cityCnt; cin >> cityCnt;
long long distance[cityCnt-1];
for(int i = 0; i < cityCnt-1; i++){
cin >> distance[i];
}
long long oilPrice[cityCnt];
for(int i = 0; i < cityCnt; i++){
cin >> oilPrice[i];
}
long long cnt = 0; long long minPrice = oilPrice[0];
price += minPrice*distance[cnt];
for(int i = 1; i < cityCnt-1; i++){
if(minPrice > oilPrice[i]){
minPrice = oilPrice[i];
}
cnt++;
price += minPrice * distance[cnt];
if(cnt == cityCnt - 2){
break;
}
}
cout << price << endl;
return 0;
}
- 변수&함수
long long price : 총 가격
long long cityCnt : 도시 개수
long long distance[cityCnt-1] : 도시 사이 거리
long long oilPrice[cityCnt] : 각 도시 기름값
long long cnt : 거쳐간 주유소 수
long long minPrice : 최소값
- 알고리즘
1) 만약 minPrice보다 oilPrice[i]값이 더 작다면 minPrice로 바꿔주고 distance와 곱한 값을 price에 더해준다.
=> 딱히 설명할 필요없는 그리디 알고리즘 문제이다
- 배운점
x...
- 아쉬운점&느낀점
이제 어떤 문제가 나타나면 타입 범위를 신경쓰는데 미리 신경써서 한번에 맞추는 연습을 해야겠다.