<< 문제 >>
https://www.acmicpc.net/problem/13305
<< 풀이 >>
단순하게 생각해보면 더 가격이 싼 주유소가 나올때까지 필요한 기름만 구매하면 된다.
Greedy 알고리즘을 통해 그때그때 파악해주면 된다.
<< 코드 >>
#include <iostream>
#include <vector>
using namespace std;
long long lw[100001];
long long op[100001];
int main()
{
int n
cin >> n;
for( int i=0; i<n-1; i++){
cin >>lw[i];
}
for( int i=0; i<n; i++){
cin >>op[i];
}
long long totalPrice = 0;
int oil = lw[0]; // 구매 양, 다음 지점 까지는 무조건 사야하니
long long nowPrice = op[0];
for(int i=1; i<n; i++)
{
if(nowPrice > op[i])
{
totalPrice += oil * nowPrice;
oil = lw[i];
nowPrice = op[i];
}
else
{
oil += lw[i];
}
}
totalPrice += oil * nowPrice; // 마지막까지 남아있는 경우
cout << totalPrice;
return 0;
}
<< 깃헙 >>
< 백준 BaekJoon : 9935번 문자열 폭발> C++ (0) | 2024.06.20 |
---|---|
< 백준 BaekJoon : 1026번 보물 > C++ (0) | 2024.06.20 |
< 백준 BaekJoon : 17520번 Balanced String > C++ (0) | 2024.06.20 |
< 백준 BaekJoon : 1931번 회의실 배정 > C++ (1) | 2024.06.18 |
< 백준 BaekJoon : 20058번 마법사 상어와 파이어스톰 > C++ (0) | 2024.04.09 |
댓글 영역