눈송이의 개발생활
[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