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);
    }
}

results matching ""

    No results matching ""