[백준] 2559 수열 JAVA

Bong2·2024년 6월 28일
0

알고리즘

목록 보기
41/63

문제 - 2559

문제 접근

누적합, 투포인터, 슬라이딩윈도우를 이용할 수 있다고 하는데 나는 슬라이딩 윈도우가 먼저 생각이 나서 고정적인 슬라이딩 윈도우를 이용했다.
k =2가 일 때
처음에 0,1의 인덱스를 더한 값인 경우 최대값으로 설정을 해준다.
그런 다음 2개의 이상일 경우 i-k 즉 2칸을 유지하면서 값을 설정해주며 최댓값을 찾는다.

소스코드

해당 소스코드를 다시보니 ans = Integer.MIN_VALUE로 설정하지 않아도 될 거 같다.

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int ans = Integer.MIN_VALUE;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int []ary = new int[n];

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

        int sum =0;

        for(int i=0;i<ary.length;i++)
        {
            sum += ary[i];

            if(i == k-1)
            {
                ans = sum;
            }
            if(i >= k)
            {
                sum -= ary[i-k];
                ans = Math.max(ans,sum);
            }
        }

        System.out.println(ans);
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글