
해당 문제는 배열에서 특정 조건을 만족하는 부분 배열을 찾아내야하므로 투포인터를 사용하였다.
이분탐색은 배열 내의 특정한 값을 찾는 방법이기 때문에 이분탐색보다 투포인터가 적합하다고 생각했다.
풀이과정은 다음과 같다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(a);
int s = 0;
int e = 0;
int min = Integer.MAX_VALUE;
while (e < n) {
int tmp = a[e] - a[s];
if (tmp >= m) {
min = Math.min(min, tmp);
s++;
if (s > e) {
e++;
}
} else {
e++;
}
}
System.out.println(min);
}
}
