Algorithm
[Algorithm] 백준 13305 주유소 c++
반응형
https://www.acmicpc.net/problem/13305
풀이
Greedy
- 제일 왼쪽 도시의 주유 가격을 현재 가격으로 설정한다.
n
번째 도시에서n + 1
번째 도시로 넘어가기 위한 거리만큼 주유를 해서 비용을 누적한다.n + 1
번째 도시의 비용이 더 저렴한 경우 현재 가격을n + 1
번째 도시의 주유 가격으로 업데이트한다.- 주의) 데이터 타입을
long long
으로 해야 한다!
소스코드
#include <iostream>
#include <vector>
using namespace std;
vector<long long> lens;
vector<long long> costs;
int main(){
int n, len, cost;
long long ans = 0;
cin>>n;
for(int i=0; i<n-1; i++){
cin>>len;
lens.push_back(len);
}
for(int i=0; i<n; i++){
cin>>cost;
costs.push_back(cost);
}
int curCost = costs[0];
for(int i=1; i<n; i++){
ans += (curCost * lens[i-1]);
//다음 도시의 비용이 더 저렴한 경우 cost 업데이트
if(curCost > costs[i]) curCost = costs[i];
}
cout<<ans;
return 0;
}
🤐 사족
처음에는 lens
와 const
, ans
의 데이터 타입을 int
로 했었다. 이렇게 하면 58점만 받게 된다. 입력받을 수 있는 값이 1,000,000,000
이므로 int
로는 부족하다는 것을 미리 알았다면 좋았을 것을.. 다음부터 데이터 타입의 범위를 잘 파악하자!
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스 입국심사 c++ (0) | 2021.09.29 |
---|---|
[Algorithm] 백준 17298 오큰수 c++ (0) | 2021.09.26 |
[Algorithm] 백준 1463 1로 만들기 c++ (0) | 2021.09.14 |
[Algorithm] 백준 9184 신나는 함수 실행 c++ (0) | 2021.09.10 |
[Algorithm] 백준 2580 스도쿠 c++ (0) | 2021.09.09 |