
백준 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);
}
}
