현재 값과 이전 등장했던 유사 값들의 합을 비교하여 가장 근접한 3가지 수를 찾도록 하였음
투 포인터를 이용하는 점은 15번 문제 풀이와 대부분 유사함
function threeSumClosest(nums: number[], target: number): number {
nums.sort((a, b) => a - b);
let closestSum = nums[0] + nums[1] + nums[2];
for (let i = 0; i < nums.length - 2; i++) {
let left = i + 1;
let right = nums.length - 1;
while (left < right) {
const currentSum = nums[i] + nums[left] + nums[right];
if (Math.abs(currentSum - target) < Math.abs(closestSum - target)) {
closestSum = currentSum;
}
if (currentSum > target) {
right--;
} else if (currentSum < target) {
left++;
} else {
return currentSum; // 정확히 target과 일치하는 경우 즉시 반환
}
}
}
return closestSum;
}