주유소

108번뇌·2021년 5월 24일
0

#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번내용 풀이 이해하기,

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글

관련 채용 정보