반응형
글이 되게 길고 무슨 이미지까지 포함돼 있어서 복잡해 보이는 문제이긴 한데
사실 굉장히 간단하고 쉬운 문제였다!!
거리와 리터당 가격을 입력받은 후, 가격 배열을 처음부터 끝까지 돌면서 cost[i]가 최소값일 경우에는 sum(총 비용)에 cost[i]를 더해주면 되고, 최소값이 아닐 경우에는 이전의 최소값 min을 더해주면 된다.
사실 이 문제가 서브태스크가 존재하는 문제였는데, 처음에는 100점이 아니라 58점이 뜨던 것...
아니 뭐가 문제인지 봤는데 알고보니 총 거리가 10억이라서, 가격이 3만 넘어가면 바로 int 타입은 오버플로우가 되던 것이었다! 그래서 int를 모두 long으로 바꿔주고 100점을 받을 수 있었다...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Comparator;
import java.lang.StringBuilder;
public class Gasstation {
public static int stoi(String str) {
return Integer.parseInt(str);
}
public static long stol(String str) {
return Long.parseLong(str);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = stoi(br.readLine());
long[] distance = new long[N-1];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N-1; i++) {
distance[i] = stoi(st.nextToken());
}
long[] cost = new long[N];
StringTokenizer st2 = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
cost[i] = stoi(st2.nextToken());
}
long sum = 0;
long min = Long.MAX_VALUE;
for (int i=0; i<N-1; i++) {
min = Math.min(min, cost[i]);
sum = sum + (min * distance[i]);
}
System.out.println(sum);
}
}
로그인
www.acmicpc.net
'컴퓨터 공학 > 백준' 카테고리의 다른 글
[백준] JAVA 자바 : A → B (16953번) (0) | 2024.03.14 |
---|---|
[백준] JAVA 자바 : 카드 정렬하기 (1715번) (0) | 2024.03.08 |
[백준] JAVA 자바 : 수들의 합 (1789번) (0) | 2024.02.23 |
[백준] JAVA 자바 : 로프 (2217번) (0) | 2024.02.23 |
[백준] JAVA 자바 : 보물 (1026번) (0) | 2024.02.23 |