작성
·
82
0
public int solution(int N, int K, int[] arr){
int sum = 0;
int answer = 0;
for (int i = 0 ; i < K; i++){
sum += arr[i];
answer = sum;
}
for (int i = K; i <= N-K; i++){
sum += arr[i] - arr[i-K];
if (sum > answer){
answer = sum;
}
}
return answer;
}
강의에서는 i 의 범위를 i = k ; i < n; 으로 놓았으나,
i = k ; i <= n-k ; 로 두고 제출을 하니 정답이 나왔습니다.
왜 정답이 나왔는지 모르겠습니다. 인덱스 i 는 슬라이딩 윈도우의 마지막 위치나 다름이 없는데, 배열의 마지막 인덱스인 n-1 까지 도달해야함이 분명합니다. 그러나, i 가 n-k 까지 가게 되면 i 가 n-1 까지 도달을 못하게 됩니다.
답변 1
1
안녕하세요^^
채점사이트의 테스트케이스가 적어서 맨 끝부분이 최대값이 되는 경우가 없어서 그냥 통과된 것 같습니다.
만약 아래와 같은 케이스가 있다면 통과되지 않을 코드입니다.
10 3
100 15 11 20 25 10 20 50 90 100
답변 감사드립니다!