강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

vanillaa님의 프로필 이미지
vanillaa

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

3. 최대 매출(Sliding window)

런타임 에러

작성

·

250

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

        int[] arr = new int[n];

        for(int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }

        int result;
        int sum = 0;
        for(int i = 0; i < k; i++) {
            sum += arr[i];
        }
        result = sum;

        for(int i = 3; i < n - k; i++) {
            sum += (arr[i] - arr[i-k]);
            result = Math.max(result, sum);
        }

        System.out.print(result);
    }
}

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

k가 항상 3으로 고정되는 숫자가 아닙니다. 문제에 있는 입력예가 된다고 다 되는게 아닙니다. 스스로 여러 입력을 만들어 테스트해보세요.

for(int i = 3; i < n - k; i++) {

            sum += (arr[i] - arr[i-k]);

            result = Math.max(result, sum);

        }

위에 for문에서 k가 100이라고 하면 arr[i-k] 에서 arr[3-100]인 arr[-97]인덱스를 참조하게 됩니다.

index out of range 에러가 납니다.

vanillaa님의 프로필 이미지
vanillaa

작성한 질문수

질문하기