Bakejoon/Gold

[Kotlin] 백준 2467번 : 용액 <Gold 5>

chattymin 2023. 7. 10. 20:10
728x90
반응형

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

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -

www.acmicpc.net

 

Code


import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.abs

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

    var start = 0
    var last = N-1

    var result = Triple(0,0, Int.MAX_VALUE)
    while (start != last){
        val fir = arr[start]
        val sec = arr[last]
        val sum = fir + sec

        if (abs(result.third) > abs(sum))
            result = Triple(fir, sec, sum)

        if (sum < 0) start++
        else last--
    }


    bw.write("${result.first} ${result.second}")
    bw.flush()
    bw.close()
}

생각보다 문제는 쉬웠다.

 

투포인트를 쓴다는걸 찾으면 쉬운 문제였다. 좌우에서 한칸씩 이동하면서 찾으면 된다. 

 

어차피 찾고자 하는 것은 0에 가까운 값이기 때문에 절댓값으로 비교를 해줬다.

 

이건 딱히 설명할만한게 없고, 코드 보면 이해가 될것이다.

728x90
반응형