728x90
https://www.acmicpc.net/problem/2467
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