ALGORITHM

[JAVA] 백준 13305번- 주유소

연듀 2023. 1. 13. 13:14

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

 

13305번: 주유소

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

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine()); // 도시의 개수
        int[] cityLength = new int[n-1]; // 인접한 두 도시를 연결하는 도로의 길이
        long [] cost = new long[n]; // 기름 값
        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0; i<n-1; i++){
            cityLength[i] = Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine());
        for(int i=0; i<n; i++){
            cost[i] = Integer.parseInt(st.nextToken());
        }

        long total = 0;
        long minPrice = cost[0];
        // 처음 도시는 주행을 해야되기 때문에 무조건 다음 도시 거리만큼 주유
        for(int i=0; i<n-1; i++){
            minPrice = Math.min(minPrice, cost[i]); // 이전 도시와 지금 도시의 주유 가격 비교해 낮은 주유 가격으로 주유
            total +=  minPrice * cityLength[i];
        }
        System.out.println(total);
    }
}