-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
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