본문 바로가기
코딩테스트

[그리디] 백준 13305번 주유소

by Enhydra lutris 2022. 9. 25.
import java.util.Scanner;

public class Main{
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int N = sc.nextInt(); //도시의 개수
        
        long[] cost = new long[N];  //기름 값
        long[] length = new long[N-1]; //도시간 길이
        
        for(int i=0; i<N-1; i++){
            length[i] = sc.nextLong();
        }
        
        for(int i=0; i<N; i++) {
            cost[i] = sc.nextLong();
        }
        
        long total = 0;
        long minCost = cost[0]; //주유 최소 비용
        for(int i=0; i<N-1; i++){
            if(cost[i] < minCost){
                minCost = cost[i]; //가장 낮은 기름값을 갱신해줌
            }
            total += (minCost * length[i]);
        }
        System.out.println(total);
    }
}

처음에 int 타입으로 했는데 큰수가 들어가면 오버플로우가 나서 58점 밖에 안나왔다.

long타입으로 바꿔서 해결했다.

댓글