https://www.acmicpc.net/problem/2473
이 문제를 보고
1. 완전 탐색인가? -> 5000 Combinaion 3 너무 큼 x
2. 투 포인터로 접근
3. 투 포인터에 이분 탐색을 써볼까?
하여 투 포인터 구현후 이분 탐색을 진행하였지만 투 포인터의 조건 자체가 잘못 되어 구현 실패.
다른 사람의 코드를 참고하니 애초에 끝에 있는 인자를 고정시키고, 투 포인터를 진행했으면 되었다.
살짝 허무했고 반성이 필요하다.
import sys
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
s = 1e12
result = []
for idx in range(n - 2):
start = nums[idx]
left, right = idx + 1, n - 1
while left < right:
hap = start + nums[left] + nums[right]
if abs(hap) < abs(s):
s = hap
result = [start, nums[left], nums[right]]
if hap > 0:
right -= 1
elif hap < 0:
left += 1
else:
result = [start, nums[left], nums[right]]
result.sort()
print(*result)
sys.exit(0)
result.sort()
print(*result)