Baekjoon/Silver
C++ / 백준 / 13305 / 주유소
GitHubSeob
2023. 7. 4. 18:28
문제 |
https://www.acmicpc.net/problem/13305
13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
문제풀이 |
1번 도시를 지나쳐 2번 도시에 도착했는데 기름의 가격이 더 비쌀 수도 있다.
그런 경우는 다시 1번 도시에서 기름을 채우면 된다. 이런 식으로 문제를 풀면 된다.
변수를 만들어 기름의 최소가격을 도시에 도착할 때마다 갱신하고, 도로의 길이만큼 최소 가격을 곱하면 된다.
코드 |
#include <iostream>
#include <vector>
#define MAX 1000000000
#define ll long long
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
ll idx(0), N(0), min_price(MAX), answer(0);
cin >> N;
vector<ll>road(N - 1, 0);
vector<ll>price(N, 0);
for (idx = 0; idx < N - 1; ++idx) {
cin >> road[idx];
}
for (idx = 0; idx < N; ++idx) {
cin >> price[idx];
}
for (idx = 0; idx < N - 1; ++idx) {
min_price = min(min_price, price[idx]);
answer += min_price * road[idx];
}
cout << answer;
}