문제 풀이 및 개발 공간

[백준] 2467번 용액 (gold 5 본문

백준공부/java

[백준] 2467번 용액 (gold 5

gomduri43 2024. 3. 26. 15:28

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.valueOf(br.readLine());

        int[] num=new int[n];

        StringTokenizer st=new StringTokenizer(br.readLine());
        for(int i=0; i<n; i++){
            num[i]=Integer.valueOf(st.nextToken());
        }

        int near=Integer.MAX_VALUE;
        int answerL=0;
        int answerR=0;

        int left=0;
        int right=n-1;

        Arrays.sort(num);
        while(left!=right){
            int t=Math.abs(num[right]+num[left]);
            if(t<near){
                near=t;
                answerL=num[left];
                answerR=num[right];
            }

            if(num[right]+num[left]<0){
                left++;
            }
            else{
                right--;
            }
        }
        bw.write(answerL+" "+answerR);
        bw.flush();
    }
}

//투포인터를 이용하여 합이 0보다 크고 작은 경계를 나누어서 구하는 간단한 문제.