문제 링크 (opens new window)

# 문제 설명

  1. 0015 3sum 문제와 거의 유사한 풀이 가능
  2. 차이값이 갱신되는 경우 해당 요소 세개에 대한 합 값을 result변수에 저장
  3. 합 값이 타겟값보다 큰 경우 오른쪽 포인터를 한칸 이동
  4. 합 값이 타겟값보다 작은 경우 왼쪽 포인터를 한칸 이동
class Solution {
    func threeSumClosest(_ nums: [Int], _ target: Int) -> Int {
        var sortedNums = nums.sorted()
        var minDiff = Int.max
        var result = Int.max

        for i in 0..<sortedNums.count {
            var left = i + 1
            var right = sortedNums.count - 1

            while(left < right) {
                let sum = sortedNums[i] + sortedNums[left] + sortedNums[right]
                if minDiff > abs(target - sum) {
                    minDiff = abs(target - sum)
                    result = sum
                }

                if sum > target {
                    right -= 1
                } else {
                    left += 1
                }
            }

        }
        return result
    }
}