강의

멘토링

로드맵

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

jhjikhsdsdw님의 프로필 이미지
jhjikhsdsdw

작성한 질문수

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

3. 최대 매출(Sliding window)

런타임 에러

작성

·

260

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

퀴즈

51%나 틀려요. 한번 도전해보세요!

투 포인터 또는 슬라이딩 윈도우 기법을 사용하여 얻을 수 있는 가장 큰 이점은 무엇일까요?

데이터를 정렬할 필요가 없다

일반적으로 더 효율적인 시간 복잡도를 가진다

더 적은 메모리를 사용한다

모든 종류의 문제에 적용 가능하다

답변 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 에러가 납니다.

jhjikhsdsdw님의 프로필 이미지
jhjikhsdsdw

작성한 질문수

질문하기