min's devlog
[Sliding window] 최대 매출 본문
N일 동안의 매출기록 중 연속된 K일 동안의 최대 매출액 구하기
입력 예제 (N,K)
10 3
12 15 11 20 25 10 20 19 13 15
출력 예제
56
import java.util.*;
class Main {
public int solution(int n, int k, int[] arr){
int answer, sum=0;
for(int i=0; i<k; i++) sum+=arr[i]; //첫번째 window만들기
answer=sum; //answer는 sum으로 초기화
for(int i=k; i<n; i++){
sum+=(arr[i]-arr[i-k]);
answer=Math.max(answer, sum); //기존값과 sum중 큰값이 answer
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
int[] arr=new int[n]; //배열의 크기 동적으로 잡음
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n, k, arr));
}
}
'창문'을 한칸씩 밀며 3개씩 합 구함
처음 sum + arr[i] - arr[i-k]
-> 12,15,11 + 20 - 12
'til > Algorithm' 카테고리의 다른 글
[Two pointers] 연속된 자연수의 합 (0) | 2021.07.30 |
---|---|
연속부분수열 (0) | 2021.07.30 |
[Two pointers] 공통원소 구하기 (0) | 2021.07.28 |
[Two pointers] 두 배열 합치기 (0) | 2021.07.27 |
[Array] 임시반장 정하기 (0) | 2021.07.24 |