본문 바로가기
알고리즘/백준

[백준/C,C++] 13305번: 주유소

by 이민훈 2021. 3. 14.

www.acmicpc.net/problem/13305

 

13305번: 주유소

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

www.acmicpc.net

주유소의 리터당 가격이 제일 싼 곳에서 더 싼 도시를 가기 전까지의 거리만큼 주유하면 되는 문제입니다.

적어도 더 싸게 주유가 가능한 2번째 도시를 가기 전까지는 첫 도시에서 리터당 가격 5를 주고 주유를 할 수밖에 없습니다. 두 번째 도시에서는 마지막 도시에 도착할 때까지 보다 싼 주유가 불가능하기에 거리 4를 이동하기 위해 필요한 모든 기름을 리터당 가격 2를 주고 주유를 해야 합니다. 5 x 2 + 2 x 4 = 18로 필요한 최소 비용은 18이죠.

#include<iostream>
#include<vector>

using namespace std;

int main(void)
{
    int n; cin >> n;
    vector<int> dis(n - 1);
    vector<int> prices(n);

    for (int i = 0; i < n - 1; i++) {
        cin >> dis[i];
    }
    for (int i = 0; i < n; i++) {
        cin >> prices[i];
    }

    int price = 1000000000;
    long long res = 0;
    for (int i = 0; i < n - 1; i++) {
        if (prices[i] < price) {
            price = prices[i];
        }
        res += 1LL * price * dis[i];
    }

    cout << res;

    return 0;
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준/C,C++] 2164번: 카드2  (0) 2021.03.15
[백준/C,C++] 18258번: 큐 2  (0) 2021.03.15
[백준/C,C++] 1541번: 잃어버린 괄호  (0) 2021.03.14
[백준/C,C++] 11399번: ATM  (0) 2021.03.13
[백준/C,C++] 11047번: 동전 0  (0) 2021.03.12

댓글