백준 13305 주유소 JAVA

sundays·2024년 5월 24일
0

문제

주유소

풀이

이문제에서 주어지는 n은 주유소가 n개 있으며 가야하는 거리는 n - 1개 있다고 생각하는 것이다. 문제가 조금 장황하게 써있지만 그런 내용이다.
그래서 이전 리터당 금액이 저렴하면 이전주유소에서 갈만큼의 양을 전부 주유하면 된다.

이전에 연료 채우기문제 와는 다른 내용인데 여기에선 각 주유소 마다 주유할 수 있는 연료의 양이 정해져있었다

이문제서는 리터당 가격만 정해져있고 주유 제한이 없다.
그렇기 때문에 정말 싼곳에서만 많이 주유하면 되겠다

일단 처음에 갈수있는 곳은 전부 주유해야 하기 때문에 다음과 같이 정의하겠다

// 총 금액 = 리터당 금액 * 가야하는 거리
int answer = oil[0] * arr[1];
// 리터 당 금액
int current = oil[0];

일단 이렇게 셋팅해주는 이유는 arr[1]은 가야 하기 때문이다. 그렇기 때문에 1부터 마지막까지 가기 위해서는 반복문을 사용해준다

for (int i = 1; i < n; i++) {
	// 가장 적은 기름 당 가격을 갱신한다
	current = Math.min(current, oil[i]);
    // 다음 정류장을 가기 위해 기름을 충전한다
    answer += current * arr[i + 1];
}

리터당 금액이 가장 적은 곳을 갱신하고 그 금액만큼 더해주면 가장 적은 금액으로 주유할 수 있다

전체 코드

전체 코드

profile
develop life

0개의 댓글