Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

Life Engineering

[BOJ 13305] 주유소 (Java) 본문

Problem Solving

[BOJ 13305] 주유소 (Java)

흑개 2022. 2. 25. 17:43

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_BOJ_13305 {
	static int N;
	static long[] dist;
	static long[] prices;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=null;
		N=Integer.parseInt(br.readLine());
		prices=new long[N];
		dist=new long[N-1];
		st=new StringTokenizer(br.readLine());
		for (int i=0; i<N-1; i++) {
			dist[i]=Long.parseLong(st.nextToken());
		}
		st=new StringTokenizer(br.readLine());
		for (int i=0; i<N; i++) {
			prices[i]=Long.parseLong(st.nextToken());
		}
		long min=Long.MAX_VALUE;
		long sum=0;
		for (int i=0; i<N-1; i++) {
			if (prices[i]<min) {	//최소값 발견 시 그걸로 사기
				min=prices[i];
			}
			sum+=(min*dist[i]);
		}
		System.out.println(sum);
	}

}

그리디 알고리즘.

 

최소값 발견 시 그걸로 갱신하고, 그것보다 작은 값을 발견할때까지 쭉 그걸로 구매하는 방식이다.

범위 설정에 유의하자.