Til
title: 2026-01-27 author: 강병호 (이름) date: 2026-01-27 (날짜) category: TIL/강병호/2026/01 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
package Q21967;
import java.util.*;
import java.io.*;
public class Q21967 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int result = 0;
int start = 0;
int[] arr = new int[N];
Deque<Integer> minDeque = new ArrayDeque<>();
Deque<Integer> maxDeque = new ArrayDeque<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for (int end = 0; end < N; end++) {
while (!minDeque.isEmpty() && arr[minDeque.peekLast()] >= arr[end]) {
minDeque.pollLast();
}
minDeque.addLast(end);
while (!maxDeque.isEmpty() && arr[maxDeque.peekLast()] <= arr[end]) {
maxDeque.pollLast();
}
maxDeque.addLast(end);
while (arr[maxDeque.peekFirst()] - arr[minDeque.peekFirst()] > 2) {
start++;
if (!minDeque.isEmpty() && minDeque.peekFirst() < start) {
minDeque.pollFirst();
}
if (!maxDeque.isEmpty() && maxDeque.peekFirst() < start) {
maxDeque.pollFirst();
}
}
result = Math.max(result, end - start + 1);
}
System.out.println(result);
}
}