CS/Algorithm

[ JAVA / 백준 : 13305 ] 주유소

yujindonut 2021. 7. 14. 21:08
728x90

조건

- 처음 출발할 때 기름이 없어서 주유소에서 기름을 넣고 출발

- 1km 마다 1리터의 기름을 사용

- 각 도시마다 주유소의 리터당 가격이 다름

- 왼쪽 도시에서 오른쪽 도시로 이동할때, 최소의 비용을 계산하는 프로그램


풀이

- 처음에는 기름을 무조건 넣고 출발해야함

- 2번째 주유소를 들릴 때부터, 이전의 최소값이 현재의 최소값인지 확인!

- 최소값이면 기름을 넣고 이전이 기름값이 더 작으면 이전의 기름값 유지


import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	public static int N;
	public static ArrayList<Integer> length = new ArrayList<>();
	public static ArrayList<Integer> price = new ArrayList<>();
	public static long findMin() {
		
		long min = price.get(0);
		long sum = min * length.get(0);
		for(int i = 1; i < N - 1; i++) {
			if(min > price.get(i))
				min = price.get(i);
			sum += min * length.get(i);
		}
		return sum;
	}
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		N = scan.nextInt();
		for(int i = 0; i < N - 1; i++) {
			length.add(scan.nextInt());
		}
		for(int i = 0; i < N; i++) {
			price.add(scan.nextInt());
		}
		System.out.println(findMin());
		scan.close();
	}
}

 

그리디는 무조건 지금 현재에서의 최소, 최대 값을 생각하자!

매일 한문제 씩 푸는것이 요즘은 재밌다!

728x90