ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 13305번: 주유소
    Algorithm/Java 2024. 7. 17. 15:20

    https://www.acmicpc.net/problem/13305

     

    - 정답 코드

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine()); // 도시 개수
    
            StringTokenizer st = new StringTokenizer(br.readLine());
            int[] list = new int[N - 1]; // 각 도로간 길이들 
    
            for(int i = 0; i < N-1; i++) {
                list[i] = Integer.parseInt(st.nextToken());
            }
    
            StringTokenizer st2 = new StringTokenizer(br.readLine());
            int[] list2 = new int[N]; // 각 도로의 리터당 가격
    
            for(int i = 0; i < N; i++) {                                                  
                list2[i] = Integer.parseInt(st2.nextToken());
            }
    
            long won = 0;
            int minPrice = list2[0]; // 현재까지의 최소 리터당 가격 // 5
            won +=  list[0] * minPrice; // 첫 도로의 비용 추가 
            
            // 두번째 도시부터 반복 시작 
            for(int i = 1; i < N - 1; i++) {
                if(list2[i] < minPrice) {                                      
                    minPrice = list2[i]; // 더 저렴한 가격 발견시 최소 가격 업데이트
                }
                won += list[i] * minPrice;                                 
            }
    
            System.out.println(won);
        }
    }

    - 문제 풀이 

    1. 최소 가격 업데이트

     if(list2[i] < minPrice) {                                      
                    minPrice = list2[i]; // 더 저렴한 가격 발견시 최소 가격 업데이트
                }

     

    • 현재 도시(i)의 주유소 가격(list2[i])이 현재까지의 최소 가격(minPrice)보다 저렴한지 비교합니다.
    • 만약 현재 도시의 주유소 가격이 더 저렴하다면, minPrice를 현재 도시의 주유소 가격으로 업데이트합니다.
    • 이 과정은 이후의 도로 비용을 계산할 때 더 저렴한 가격을 사용할 수 있도록 하는 역할을 합니다.

     

    2. 도로 비용 계산 및 누적:

    won += list[i] * minPrice;

     

     

    • 현재 도로(list[i])의 길이에 minPrice를 곱하여 현재 도로를 지나가는 비용을 계산합니다.
    • 계산된 비용을 won에 더하여 총 비용을 누적합니다.
    • 여기서 minPrice는 현재까지 발견된 가장 저렴한 주유소 가격입니다.

     

    반응형

    'Algorithm > Java' 카테고리의 다른 글

    [백준/JAVA] 16953번: A → B  (0) 2024.07.18
    [백준/JAVA] 13305번: 블로그2  (0) 2024.07.17
    [백준/JAVA] 20300번: 서강근육맨  (0) 2024.07.17
    [백준/JAVA] 11399번: ATM  (0) 2024.07.17
    [백준/JAVA] 11508번: 2+1 세일  (0) 2024.07.16
Designed by Tistory.