백준 13305_주유소

hello_hidi·2021년 7월 25일
0

baekjoon_C++

목록 보기
33/33
post-thumbnail

#include <iostream>
using namespace std;
int main(){
    long long price = 0;
    long long cityCnt; cin >> cityCnt;
    long long distance[cityCnt-1];
    for(int i = 0; i < cityCnt-1; i++){
        cin >> distance[i];
    }
    long long oilPrice[cityCnt];
    for(int i = 0; i < cityCnt; i++){
        cin >> oilPrice[i];
    }
    long long cnt = 0; long long minPrice = oilPrice[0];
    price += minPrice*distance[cnt];

    for(int i = 1; i < cityCnt-1; i++){
        if(minPrice > oilPrice[i]){
            minPrice = oilPrice[i];
        }
        cnt++;
        price += minPrice * distance[cnt];
        if(cnt == cityCnt - 2){
            break;
        }
    }
    cout << price << endl;
    return 0;
}
  1. 변수&함수
    long long price : 총 가격
    long long cityCnt : 도시 개수
    long long distance[cityCnt-1] : 도시 사이 거리
    long long oilPrice[cityCnt] : 각 도시 기름값
    long long cnt : 거쳐간 주유소 수
    long long minPrice : 최소값
  1. 알고리즘
    1) 만약 minPrice보다 oilPrice[i]값이 더 작다면 minPrice로 바꿔주고 distance와 곱한 값을 price에 더해준다.
    => 딱히 설명할 필요없는 그리디 알고리즘 문제이다
  1. 배운점
    x...
  1. 아쉬운점&느낀점
    이제 어떤 문제가 나타나면 타입 범위를 신경쓰는데 미리 신경써서 한번에 맞추는 연습을 해야겠다.
profile
안뇽희디

0개의 댓글