1.완성한 left, mid, right 위치의 배열값을 출력하면 정답이 된다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
long[] arr = new long[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Long.parseLong(st.nextToken());
}
Arrays.sort(arr);
int leftAns = 0;
int rightAns = 0;
int midAns = 0;
long ans = 3_000_000_000L;
for (int i = 0; i < n-2; i++) {
int left = i+1;
int right = n-1;
while(left < right){
long sum = arr[left] + arr[right] + arr[i];
long diff = Math.abs(arr[left] + arr[right] + arr[i]);
if(diff < ans){
ans = diff;
leftAns = i;
rightAns = right;
midAns = left;
}
if(sum < 0){
left++;
}else{
right--;
}
}
}
bw.write(arr[leftAns] + " " + arr[midAns] + " " + arr[rightAns]);
br.close();
bw.close();
}
}