본문 바로가기
  • 개발하는 곰돌이
Algorithm/BOJ

[Kotlin] 백준 13305 : 주유소

by 개발하는 곰돌이 2023. 7. 27.

문제 링크

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net


문제 해설

그리디 입문 문제.

 

문제의 내용 중에 기름통의 크기가 무제한이라는 언급이 있다. 기름을 무한정 축적할 수 있기 때문에 문제를 쉽게 해결할 수 있다.

 

마지막 도시까지 이동하는 최소 비용을 구하기 위해서는 다음 도시로 이동해가면서 현재 도시까지의 가장 저렴한 기름값과 남은 거리를 계산하여 더해주면 된다.

 

각 도시마다 주유소가 있다고 되어있지만 마지막 도시가 곧 도착지점이기 때문에 계산 과정에 포함되지 않아서 굳이 입력받을 필요는 없다.

Code

import java.util.*

fun main() = with(System.`in`.bufferedReader()) {
    val n = readLine().toInt() - 1
    val distance = StringTokenizer(readLine()).run { LongArray(n) { nextToken().toLong() } }
    val price = StringTokenizer(readLine()).run { LongArray(n) { nextToken().toLong() } }
    var minPrice = price[0]
    var total = 0L
    for (i in 0 until n) {
        minPrice = minOf(minPrice, price[i])
        total += minPrice * distance[i]
    }
    println(total)
}

댓글