[백준] 2470번 두 용액

Greenddoovie·2021년 12월 10일
0

백준

목록 보기
5/30

2470번 두 용액

접근 방법

용액의 특성값을 오름차순 정렬
왼쪽 끝과 오른쪽 끝을 더해가며

1) 더한 값이 > 0 인 경우

> 우측 인덱스를 하나 줄인다

2) 더한 값이 < 0 인 경우

> 좌측 인덱스를 하나 늘린다

3) 더한 값이 ==0 인 경우

> 탐색을 멈추고 반환한다

코드

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

val br = BufferedReader(InputStreamReader(System.`in`))

fun main() {
    val N = br.readLine().toInt()
    val solutions = br.readLine().split(" ").map{ it.toInt() }.sorted()

    var ans = Pair(1000000001, 1000000001)
    var left = 0
    var right = solutions.lastIndex
    while (left < right) {
        var mix = solutions[left] + solutions[right]
        if (abs(mix) < abs(getMixOfAns(ans))) {
            ans = Pair(solutions[left] , solutions[right])
        }
        if (mix < 0) {
            left += 1
        } else if (mix ==0 ) {
            break
        } else {
            right -= 1
        }
    }
    println("${ans.first} ${ans.second}")
}

fun getMixOfAns(ans: Pair<Int, Int>) : Int {
    return ans.first + ans.second
}
profile
기초를 이해하면 세상이 다르게 보인다

0개의 댓글