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 |