본문 바로가기

ALGORITHM

백준 13305 주유소 (Java)

1. 문제 링크

 

13305번: 주유소

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

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

  1. 일직선 상에 있는 도시를 가는데 최소 주유 비용을 찾는 문제이다.
  2. 처음에는 해당 숫자가 몇번까지 숫자중에 제일 큰 가격인지 확인하려 했지만.. 숫자가 너무 커서 패스
  3. 도시를 지나가면서 제일 작은 가격이 나오면 저장하고 거리 길이만큼 곱해서 갔다.

  여기서 마지막 도시는 주유하지 않으니까 리터 당 가격을 저장하지 않았다.

 

4. 코드

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

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int N = Integer.parseInt(br.readLine());
		long[] distance = new long[N-1];
		long[] price = new long[N-1]; 
		String[] split = br.readLine().split(" ");
		for(int i=0;i<N-1;i++) {
			distance[i] = Integer.parseInt(split[i]);
		}
		split = br.readLine().split(" ");
		for(int i=0;i<N-1;i++) {
			price[i] = Integer.parseInt(split[i]);
		}		
		long cost = 0;
		long min = price[0];
		for(int i=0;i<N-1;i++) {
			min = Math.min(min, price[i]);
			cost += min * distance[i];
		}
		System.out.println(cost);
	}
}