본문 바로가기
Algorithm Study/BaekJoon (JAVA)

백준 2470_두 용액_JAVA

by 창브로 2024. 5. 19.
728x90

https://www.acmicpc.net/problem/2470

 

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());
        long[] arr = new long[n];

        for (int i = 0; i < n; i++) {
            arr[i] = Long.parseLong(st.nextToken());
        }

        Arrays.sort(arr);

        int left = 0;
        int right = n - 1;
        long minValue = Long.MAX_VALUE;
        long leftAnswer = 0, rightAnswer = 0;

        while (left < right) {
            long value = arr[left] + arr[right];
            if (value > 0) {
                if (minValue > Math.abs(value)) {
                    minValue = Math.abs(value);
                    leftAnswer = arr[left];
                    rightAnswer = arr[right];
                }
                right--;
            } else if (value < 0) {
                if (minValue > Math.abs(value)) {
                    minValue = Math.abs(value);
                    leftAnswer = arr[left];
                    rightAnswer = arr[right];
                }
                left++;
            } else {
                leftAnswer = arr[left];
                rightAnswer = arr[right];
                break;
            }
        }

        System.out.print(leftAnswer + " " + rightAnswer);
    }
}

 

 

회고

- 골드5 치곤 좀 쉬웠던 문제 같다

- 투 포인터 기본 문제였다