https://www.acmicpc.net/problem/14921
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int answer = Integer.MAX_VALUE;
for (int i = 0; i < n - 1; i++) {
answer = binarySearch(arr, i, i + 1, n - 1, answer);
if (answer == 0) {
break;
}
}
System.out.println(answer);
}
private static int binarySearch(int[] arr, int targetIdx, int start, int end, int answer) {
while (start <= end) {
int mid = (start + end) / 2;
int sum = arr[mid] + arr[targetIdx];
if (sum == 0) {
return 0;
} else if (sum < 0) {
start = mid + 1;
} else {
end = mid - 1;
}
if (Math.abs(sum) < Math.abs(answer)) {
answer = sum;
}
}
return answer;
}
}
이진 탐색 기본 문제
이렇게 Java로 백준의 "용액 합성하기" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊