실버4 난이도의 문제이다.
package CodeTree;
import java.io.*;
import java.util.*;
/**
* A 에서 연속 부분 수열을 뽑고 오름차순으로 정렬한다.
* 수열 B를 오름차순으로 정렬한다.
* 두 개를 비교해서 같으면 인덱스 저장, count +
*/
public class sol2 {
static int n, m;
static int[] a, b;
static int count = 0;
static ArrayList<Integer> index;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(br.readLine().trim());
}
m = Integer.parseInt(br.readLine());
b = new int[m];
for (int i = 0; i < m; i++) {
b[i] = Integer.parseInt(br.readLine().trim());
}
Arrays.sort(b);
index = new ArrayList<>();
for (int i = 0; i <= n - m; i++) {
int[] subArray = new int[m];
int firstIdx = i;
boolean flag = true;
for (int j = 0; j < m; j++) {
subArray[j] = a[firstIdx];
firstIdx++;
}
Arrays.sort(subArray);
int gap = subArray[0] - b[0];
for (int j = 1; j < m; j++) {
if ((subArray[j] - b[j]) != gap) {
flag = false;
break;
}
}
if (flag) {
index.add(i+1);
count++;
}
}
System.out.println(count);
for (int i = 0; i < index.size(); i++) {
System.out.println(index.get(i));
}
}
}
정렬 후에 같은 인덱스의 요소끼리의 차이를 비교해야한다는 풀이만 생각해내면 금방 풀 수 있는 문제이다.
그런데 입력 값을 잘 보면 n줄에 걸쳐 수열에 해당하는 숫자를 하나씩 입력 받는데, 뒤에 "1 " 이렇게 공백이 존재한다. 아래와 같은 에러 발생

그래서 .trim을 이용해 공백을 제거하고 저장해야한다.
이건 문제의 오류라고 해야할지 뭔지.. 이런 부분에서는 확실히 백준보다 부족한 듯