티스토리 뷰

반응형

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

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net


 

⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 그리디 알고리즘

 


 

⊙ 문제 접근 과정

 

제일 왼쪽 도시부터 제일 오른쪽 도시까지의 거리는 1 이상 1,000,000,000 이하의 자연수라 long long을 사용해주었다. 


 

⊙ 문제 풀이

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
typedef long long ll;

ll N;
ll result=0;
vector<ll> dis;
vector<ll> city;

int main() {
    cin >> N;

    for(auto i=0;i<N-1;i++) {
        int x;
        cin >>x;
        dis.push_back(x);
    }

    for(auto i=0;i<N;i++) {
        int x;
        cin >> x;
        city.push_back(x);
    }

    ll temp=city[0];

    for(int indx=0;indx<=N-1;indx++) {
        if(temp<=city[indx+1]) {
            result+=dis[indx]*temp;
        } else {
            result+=dis[indx]*temp;
            temp=city[indx+1];
        }
    }
    cout << result;
}

⊙ 결과

 


⊙ 마무리

 

 

코드가 간단해보이지만 처음엔 길었다. 최적화를 3번 해줬다. (TMI)

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함