본문 바로가기

알고리즘

[백준][KOTLIN] 13305 주유소

728x90

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

 

13305번: 주유소

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

www.acmicpc.net

풀이

1. 각 입력을 Price, Distance 배열에 저장한다.

2. newPrice field 를 선언하고 Price[0] 값을 저장 한다.

3. Distance 배열 만큼 검색을 하는데 이때 newPrice 값과 현재 index 의 Price 값을 비교하여 작은 값으로 계산을 한다.

4. 3번에서 newPrice 보다 작은 값이 들어 올 경우 newPrice 를 작은 값으로 업데이트하고 다음 검색을 수행 한다.

- 주의 : 입력이 크므로 Long Type 으로 거리/가격의 정보를 저장 한다.

코드

import java.io.*

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    val N = br.readLine().toInt()
    val D = br.readLine().split(" ").map { it.toLong() }
    val P = br.readLine().split(" ").map { it.toLong() }

	// 비교하기 위한 Price 정보에 처음 가격 값을 저장한다.
    var nextP = P[0]
    var sum = 0L

    for (i in D.indices) {
    	// 현재 가격 정보와 다음 가격 정보를 비교한다.
        if (nextP > P[i]) {
            nextP = P[i]
        }

        sum += nextP * D[i]
    }

    bw.write("$sum\n")
    bw.flush()
    bw.close()
    br.close()
}
728x90

'알고리즘' 카테고리의 다른 글

[백준][KOTLIN] 2630 색종이 만들기  (0) 2022.01.03
분할 정복(Divide & Conquer)  (0) 2022.01.03
[백준][KOTLIN] 1541 잃어버린 괄호  (0) 2021.12.24
[백준][KOTLIN] 11399 ATM  (0) 2021.12.24
[백준][KOTLIN] 1931 회의실 배정  (0) 2021.12.24