백준 주유소
백준 주유소
코드
import java.io.*;
import java.util.StringTokenizer;
public class Baekjoon13305 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long[] d = new long[n-1];
long[] l = new long[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i<d.length;i++){
d[i] = Long.parseLong(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for(int i = 0; i<l.length;i++){
l[i] = Long.parseLong(st.nextToken());
}
long min = l[0];
long sum = 0;
for(int i = 0;i<n-1;i++){
if(min>l[i]){
min = l[i];
}
sum+=(min*d[i]);
}
System.out.print(sum);
}
}
설명
이 문제는 문제를 이해하는 부분이 어려워 다른 분의 문제 해석을 먼저 본 후 풀이를 해봤다. 먼저 최소 비용으로 목적지 까지 가는 방법은 간단하다. 리터당 기름 값이 내림차순일 경우에 주유하면 된다. 즉 입출력에서 주어진 5 2 4 1에서 5 다음 2는 내림차순이므로 5,2가 선택 되고 그 다음 4는 내림차순이 아니기 때문에 마지막에 선택되었던 내림차순 수인 2로 계산되어야 한다. 내림차순으로 바꿔주는 개념이 가장 핵심이였던 부분인 거 같다.