문제
풀이
2467번 문제와 동일하게 풀이하되, sols[] 배열 전체를 돌며 sols[left] + sols[right] + sols[i](0 < i < N-2, left < right)가 가장 0에 가까워질 때를 찾아야 한다.
특성값 범위가 -10억 이상, 10억 이하로 매우 크므로 sols와 sum, min 등을 모두 long 타입으로 선언해야 한다.
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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());
int[] sols=new int[N];
for(int i=0; i<N; i++) {
sols[i]=Integer.parseInt(st.nextToken());
}
int min=Integer.MAX_VALUE;
int leftRes=0, rightRes=0;
int left=0, right=N-1;
while(left<right) {
int sum=sols[left]+sols[right];
if(min>Math.abs(sum)) {
min=Math.abs(sum);
leftRes=left; rightRes=right;
}
//binary search
if(sum>=0) {
right--;
}
else {
left++;
}
}
System.out.println(sols[leftRes]+" "+sols[rightRes]);
}
}
'백준' 카테고리의 다른 글
백준 2343: 기타 레슨(python) (0) | 2024.11.18 |
---|---|
백준 17298: 오큰수(java) (0) | 2024.10.13 |
백준 2467: 용액(java) (0) | 2024.10.11 |
백준 1806: 부분합(java) (0) | 2024.10.08 |
백준 1253: 좋다(java/python) (0) | 2024.10.07 |