본문 바로가기

Java

Sliding Window 알고리즘

728x90

Sliding Window 알고리즘

public class SlidingWindow {
    public static void main(String[] args) {
        int [] arr = {1,5,4,3,6,1,2,4,2,1}; // 배열
        int k = 3; // 배열 크기
        System.out.println(sumMaxSlidingWindow(arr,k));
        System.out.println(maxElementSlidingWindow(arr,k));


    }

    public static int sumMaxSlidingWindow(int[] arr,int k) { // 배열 크기에 해당하는 배열의 원소의 합이 가장큰 값

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

        for(int i=k; i<arr.length;i++){
            int value = max-arr[i-k]+arr[i];

            max = Math.max(max,value);
        }

        return max;
    }

    public static List<Integer> maxElementSlidingWindow(int[] arr,int k) { // 배열 크기에 해당하는 배열의 원소 중 가장 큰값
        PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<k; i++){
            queue.add(arr[i]);
        }

        list.add(queue.element());

        for(int i=k; i<arr.length;i++){
            queue.remove(arr[i-k]);
            queue.add(arr[i]);
            list.add(queue.element());
        }

        return list;
    }


}

 

알고리즘(징검다리 건너기)

https://school.programmers.co.kr/learn/courses/30/lessons/64062

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

https://github.com/yougeun6021/Algorithm/blob/master/src/Level3/SteppingStone.java

 

GitHub - yougeun6021/Algorithm

Contribute to yougeun6021/Algorithm development by creating an account on GitHub.

github.com

 

728x90

'Java' 카테고리의 다른 글

stream을 활용한 2차원배열 합  (0) 2022.11.27
약수 개수 알고리즘  (0) 2022.11.24
StringBuilder를 활용한 dfs  (0) 2022.11.21
dfs 순열 알고리즘  (0) 2022.11.19
객체를 원하는 조건에 따라 정렬  (0) 2022.11.13