diff --git "a/03do-new30/202507/13 BOJ G3 \354\204\270 \354\232\251\354\225\241.md" "b/03do-new30/202507/13 BOJ G3 \354\204\270 \354\232\251\354\225\241.md" new file mode 100644 index 00000000..bdc6faa7 --- /dev/null +++ "b/03do-new30/202507/13 BOJ G3 \354\204\270 \354\232\251\354\225\241.md" @@ -0,0 +1,50 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + static int N; + static long[] arr, answer; + static long minAbs; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + 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); + minAbs = 3_000_000_000L; + for (int startIdx = 0; startIdx < N-2; startIdx++) { + twoPointer(startIdx); + } + for (long num : answer) { + System.out.print(num + " "); + } + br.close(); + } + + private static void twoPointer(int startIdx) { + int leftIdx = startIdx + 1; + int rightIdx = N-1; + while (leftIdx < rightIdx) { + long currentVal = arr[startIdx] + arr[leftIdx] + arr[rightIdx]; + long currentAbs = Math.abs(currentVal); + if (currentAbs < minAbs) { + minAbs = currentAbs; + answer = new long[] {arr[startIdx], arr[leftIdx], arr[rightIdx]}; + } + if (currentVal < 0) { + leftIdx++; + } else if (currentVal > 0) { + rightIdx--; + } else { + break; + } + } + } +} + +```