start는 인덱스 0, end는 인덱스 n-1로 설정하고, answer 값을 이분탐색하며 구할 수 있었다
단, 출력값으로 두 용액의 특성값을 출력해야 했으므로 answer 값을 갱신할 때, 두 용액의 인덱스 값도 저장해주는 과정이 필요했다
소스 코드
import sys
input = sys.stdin.readline
n = int(input())
data = list(map(int, input().split()))
data.sort()
start, end = 0, n-1
answer = data[start] + data[end]
a_start, a_end = start, end
while start < end:
tmp = data[start] + data[end]
if abs(tmp) < abs(answer):
answer = tmp
a_start, a_end = start, end
if answer == 0:
break
if tmp < 0:
start += 1
else:
end -= 1
print(data[a_start], data[a_end])