• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

while문 하나만 사용해서 문제를 풀었는데 길이 계산 식이 왜 이렇게 되는지 궁금합니다.

22.07.02 01:04 작성 조회수 255

0

import java.util.Scanner;

class Main {
    public int solution(int n, int k, int[] arr) {
        int answer = 0, lt = 0, rt = 0, kr = k;

        while (rt < n) {
            if (arr[rt] == 0) {
                if (kr > 0) {
                    kr--;
                    rt++;
                } else {
                    if (arr[lt] == 0) {
                        kr++;
                        lt++;
                    } else lt++;
                }
            } else {
                rt++;
            }
            if (answer < rt-lt) answer = rt-lt;
        }

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int k = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0 ; i < n; i ++)
            arr[i] = kb.nextInt();
        System.out.println(T.solution(n, k, arr));
    }
}

강사님이 풀은 방식과는 동일하게 작동하는 것일텐데 rt 와 lt 길이 계산이 rt-lt+1 이 아닌  rt-lt 로 해줘야 맞는 결과가 나오네요 왜 이런 것인가요?

답변 1

답변을 작성해보세요.

1

안녕하세요^^

이런 건 스스로 찾으셨으면 좋겠습니다.