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 |