→ Problems

[Algorithm] 백준 - 2467번 용액 (Swift)

Swift librarian 2024. 6. 17. 12:05

문제 소개

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

 

문제 풀이

정렬이 되어있으니 투포인터 알고리즘으로 풀면 된다.

import Foundation

let n = Int(readLine()!)!
var solutions = readLine()!.split(separator: " ").map { Int($0)! }

var value = 2_000_000_000
var left = 0
var right = n-1

var answer = (solutions[0], solutions[n-1])

while left < right {
    let sum = solutions[left] + solutions[right]
    
    if abs(sum) < value {
        value = abs(sum)
        answer = (solutions[left], solutions[right])
        if sum == 0 { break }
    }
    
    if sum < 0 { left += 1}
    if sum >= 0 { right -= 1}
}

print(answer.0, answer.1)