작성
·
48
0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int k = sc.nextInt();
sc.nextLine();
int[] array = new int[N];
for (int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}
sc.nextLine();
Main main = new Main();
int result = main.solution(array, k);
System.out.println(result);
}
private int solution(int[] array, int k) {
int lt = 0;
int answer = 0;
int count = 0;
for (int rt = 0; rt < array.length; rt++) {
if (array[rt] == 0)
count++;
while (count > k) {
if (array[lt] == 0) {
count--;
}
lt++;
}
answer = Math.max(answer, rt - lt + 1);
}
return answer;
}
}
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. ryan.woo님.
작성해주신 코드에 대해서 RuntimeError
가 발생할 수 있는 몇 가지 원인을 살펴보겠습니다. 이 오류는 종종 입력 데이터의 예상치 못한 상황에서 발생할 수 있습니다. 아래의 경우를 확인해 보시기 바랍니다:
입력 데이터 누락: Scanner
로 데이터를 읽을 때, nextLine()
을 사용하여 입력 버퍼를 비우고 있습니다. 이 과정에서 입력이 제대로 처리되지 않거나, 입력 데이터 형식이 올바르지 않으면 RuntimeError
가 발생할 수 있습니다.
배열의 범위: 코드에서 array[i] = sc.nextInt();
를 통해 배열을 채우고 있는데, 만약 입력값이 부족하거나 너무 많다면 배열에 잘못된 접근이 시도될 수 있습니다.
논리 오류: 만약 특정 입력에 대해 알고리즘이 무한 루프에 빠지거나 잘못된 연산을 시도할 가능성이 있다면 오류가 발생할 수 있습니다. 예를 들어, count > k
조건을 맞추지 못한 경우 계속해서 lt
를 증가시키면서 에러가 생길 수도 있습니다.
이미지 결과에 따르면, ID 2에서 오류가 발생하는 것으로 보입니다. 다른 테스트 케이스와 비교해 특별하게 다른 입력이 있는지 확인해보시는 것도 해결에 도움이 될 수 있습니다.
관련된 질문이 아래 링크들에서 비슷한 주제로 논의되었습니다. 추가적으로 참고해 보시면 도움이 되실 것 같습니다:
위의 링크들을 통해 코드의 이해와 함께 비슷한 문제에 대한 해결책을 확인해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.