백준 2470번 두 용액 JAVA

YB·2025년 4월 18일

링크텍스트

설명

백준 2467번 용액이랑 거의 똑같은 문제이다. 다른점이라면 오름차순 정렬만 해주면 된다. 링크텍스트
시간복잡도: O(NlogN), 공간복잡도: O(N)

회독

  • [ x ] 1회
  • 2회
  • 3회

코드

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

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

        int n = Integer.parseInt(br.readLine());

        int [] arr = new int[n];

        boolean plus = true;
        boolean minus = true;

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0;i<n;i++){
            arr[i] = Integer.parseInt(st.nextToken());
            if(arr[i]>0){
                minus = false;
            }else{
                plus = false;
            }
        }

        Arrays.sort(arr);

        if(plus){
            System.out.println(arr[0]+" "+arr[1]);
            return;
        }else if(minus){
            System.out.println(arr[n-2]+" "+arr[n-1]);
            return;
        }

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

        int min = Integer.MAX_VALUE;
        int answer1 = 0, answer2 = 0;
        
        while(left<right){
            int sum = arr[left]+arr[right];

            if(Math.abs(sum)<min){
                min = Math.abs(sum);
                answer1 = arr[left];
                answer2 = arr[right];
            }

            if(sum>0){
                right--;
            }else
                left++;
        }

        System.out.println(answer1+" "+ answer2);
    }
}

profile
안녕하세요

0개의 댓글