반응형
- 알고리즘 분류 : 이분 탐색(이진 탐색)
- 사용 언어 : JAVA
- 문제 요점
- 이진 탐색을 진행하면서, 절반씩 탐색이 아닌 1씩 줄여가며 탐색한다.
소스 설명은 주석을 참고해주세요.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int num1 = 0, num2 = 0, figure = Integer.MAX_VALUE;
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr); // 오름차순 정렬
BinarySearch(0, arr.length-1);
System.out.println(num1 + " " + num2);
}
static void BinarySearch(int start, int end) {
if(start >= end) return;
int sum = arr[start] + arr[end];
if(Math.abs(sum) < figure) {
num1=arr[start];
num2=arr[end];
figure=Math.abs(sum);
if(sum == 0) {
return;
}
}
if(sum < 0) {
BinarySearch(start+1, end);
}
else {
BinarySearch(start, end-1);
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
[BAEKJOON] 10815번 : 숫자 카드 (JAVA) (0) | 2023.04.05 |
---|---|
[BAEKJOON] 2110번 : 공유기 설치 (JAVA) (0) | 2023.04.04 |
[BAEKJOON] 7490번 : 0 만들기 (JAVA) (0) | 2023.04.02 |
[BAEKJOON] 10159번 : 저울 (JAVA) (0) | 2023.04.01 |
[BAEKJOON] 18223번 : 민준이와 마산 그리고 건우 (JAVA) (0) | 2023.04.01 |