문제 소개
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)
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 1197번 최소 스패닝 트리 (Swift) (1) | 2024.06.18 |
---|---|
[Algorithm] 백준 - 27172번 수 나누기 게임 (Swift) (1) | 2024.06.18 |
[Algorithm] 백준 - 2166번 다각형의 면적 (Swift) (CCW 알고리즘) (0) | 2024.06.17 |
[Algorithm] 백준 - 3055번 탈출 (Swift) (0) | 2024.06.15 |
[Algorithm] 백준 - 16954번 움직이는 미로 탈출 (Swift) (1) | 2024.06.14 |