눈송이의 개발생활

[BOJ]13305 - 주유소 (C++) 본문

Algorithm/BOJ

[BOJ]13305 - 주유소 (C++)

꾸지새미언니

문제

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

코드

#include <iostream>
#include <algorithm>

using namespace std;

long long km[100000];
long long pr[100000]; 

int main(){
    cin.tie(0), cout.tie(0);
    ios_base::sync_with_stdio(0);

    long long total = 0; 
    int n;
    cin >> n; 
    for(int i=0; i<n-1; i++){
        cin >> km[i];
    }
    for(int i=0; i<n; i++){
        cin >> pr[i];
    }

    long long pr_now = pr[0]; 
    for (int i=1; i<n; i++){
        if(pr_now > pr[i]){
            total += pr_now * km[i-1];
            pr_now = pr[i];
        } else{
            total += pr_now * km[i-1];
        }
    }

    cout << total; 
}

풀이

이 문제는 처음에 어떻게 접근해야 하는지 감이 안잡혀서 삽질을 조금 했다...
가격을 저장한 배열에서 현재 가격을 pr_now라고 놓고 그 앞 인덱스의 가격이 더 작으면 현재 가격으로 거리를 계산하고 가격을 더 작은 값으로 바꿔준다.
km[i-1]번째를 곱하는 이유는 현재 보고 있는 기름 값(pr[i])까지 가기 위해서는 그 전에 있는 값 중 가장 작은 기름 값(pr_now)을 거리(km[i-1])에 곱해야 하기 때문이다.

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]1929 - 소수 구하기 (Python)  (0) 2022.01.06
[BOJ]17427 - 약수의 합 2 (Python)  (0) 2022.01.06
[BOJ]11047 - 동전 0 (C++)  (0) 2022.01.05
[BOJ]11568 - 민균이의 계략 (C++)  (0) 2022.01.05
[BOJ]11048 - 이동하기 (C++)  (0) 2022.01.05
Comments