본문 바로가기
BaekJoon/C++

13305 : 주유소 (C++)

by GrayChoi 2021. 2. 19.
반응형

 

13305번: 주유소

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

www.acmicpc.net


그리디 알고리즘으로 해결한 문제이다.

처음에 조금 헷갈려서 문제를 이해하고 푸는데 좀 시간이 걸렸다.

반성하자.

#include<iostream>
#define ll long long int

using namespace std;

// 거리와 가격이 최대 1,000,000,000이하로
// 들어옴으로 int로는 계산이 불가능 하다.
ll total = 0;
ll mini = 1000000001;

int main() {
    int N;
    cin >> N;

    ll distance[N];
    ll price[N];

    for(int i = 0; i < N-1; i++) {
        cin >> distance[i];
    }

    for(int i = 0; i < N-1; i++) {
        // 마지막 주유소의 값은 계산에 포함 될 일이 없으므로 생략
        cin >> price[i];
        mini = mini > price[i] ? price[i] : mini;
        // minimun값과 비교해서 가격이 더 낮을 때 가격 교체
        total += mini * distance[i];
        // minimum값과 거리값을 곱해서 총합에 덧셈.
    }

/* 처음에 짰던 코드
    int start = 0;
    int end = 1;

    while(end != N) {
        if(price[start] <= price[end]) {
            total += distance[end] * price[start];
        } else {
            total += distance[end] * price[start];
            start = end;
        }
        end++;
    }
*/

    cout << total << "\n";

    return 0;
}
반응형

'BaekJoon > C++' 카테고리의 다른 글

2636 : 치즈 (C++)  (0) 2021.02.22
14502 : 연구소 (C++)  (0) 2021.02.20
2573 : 빙산 (C++)  (0) 2021.02.18
2579 : 계단 오르기 (C++)  (0) 2021.02.18
20551 : Sort 마스터 배지훈의 후계자 (C++)  (0) 2021.02.18

댓글