배열을 입력받아 합으로 0을 만들 수 있는 3개의 엘리먼트를 출력하라.
def solution(nums):
ans = []
nums.sort()
for i in range(len(nums) - 2):
if i > 0 and nums[i] == nums[i - 1]:
continue
start_num = nums[i]
left = i + 1
right = len(nums) - 1
while left < right:
sum_val = start_num + nums[left] + nums[right]
if sum_val < 0:
left += 1
elif sum_val > 0:
right -= 1
else:
ans.append([start_num, nums[left], nums[right]])
while left < right and nums[left] == nums[left + 1]:
left += 1
while left < right and nums[right] == nums[right - 1]:
right -= 1
left += 1
right -= 1
return ans