Given an integer array nums of length n and an integer target,
find three integers in nums such that the sum is closest to target.
Return the sum of the three integers.
You may assume that each input would have exactly one solution.
주어진 정수 배열에 대해 3개의 숫자를 뽑았을때, 세 숫자의 합과 주어진 타겟 값과의 차이가 가장 작은
세 숫자의 합을 리턴하시오.
Input: nums = [-1,2,1,-4], target = 1
Output: 2
Explanation: 타겟값인 1에 가장 가까운 세 숫자는 [-1, 2, 1] 이며, 이 숫자들의 합은 -1 + 2 + 1 = 1 이다.
-5, -3, 1, 2, 4 의 배열에 target이 3인 경우 예시는 아래와 같습니다.
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
left = 0
ans = 0
difference = 999999
for left in range(0, len(nums) - 2):
mid, right = left + 1, len(nums) - 1
while mid < right:
p_sum = nums[left] + nums[mid] + nums[right]
diff = abs(target - p_sum)
if diff < difference:
difference = abs(target - p_sum)
ans = p_sum
if target - p_sum < 0:
right -= 1
elif target - p_sum > 0:
mid += 1
else:
return p_sum
return ans