하루하나코딩

백준 13305 : 주유소 c++

HAHAKO 2023. 1. 30. 12:33

코드

#include <iostream>

using namespace std;

int main(){
	
	int N;
	cin >> N;
	long long distance[100001];
	long long oilprice[100001];
	long long min;
	
	for(int i = 1; i < N; i++){
		cin >> distance[i];
	}
	
	for(int i = 0; i < N; i++){
		cin >> oilprice[i];
	}
	min = oilprice[0];
	
	long long ans = min * distance[1];
	
	for(int i = 2; i < N; i++){
		if(min < oilprice[i-1]) ans += min*distance[i];
		else{
			min = oilprice[i-1];
			ans += min*distance[i];
		}
	}
	
	cout << ans;
	
	return 0;
}

알게된 점

그냥 간단하게 최소값을 갱신해주면서 풀면되는 간단한 그리디문제다.

다만 숫자범위를 잘 확인해서 int인지 long long인지 확인해야한다.

int로 하면 점수가 58점이 나오니까 이 점을 주의해야 한다!