본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[c++] 백준 13305 주유소

백준 단계별로 풀어보기 [그리디 알고리즘] 주유소

https://www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

 

[풀이]

가격이 가장 작은 주유소의 기름 최소값과 도로 거리를 곱할 수 있도록 비교해가며 min값을 설정한다. 

 

[코드]

#include <iostream>
#include <algorithm>

long long road[100000];
long long price[100000];

int main() {
	//주유소의 기름 가격과 각 도시를 연결하는 도로 길이를 입력, 최소의 비용 계산

	using namespace std;
	long long n;
	cin >> n;

	//n-1개의 도로 길이 입력
	for (int i = 0; i < n - 1; i++) {
		cin >> road[i];
	}

	//n개의 리터당 가격 입력
	for (int i = 0; i < n; i++) {
		cin >> price[i];
	}

	long long total = 0, min = 1000000001;
	for (int i = 0; i < n; i++) {
		if (price[i] < min)
			min = price[i];
		total += min * road[i];
	}

	cout << total;

}