min's devlog

[Sliding window] 최대 매출 본문

til/Algorithm

[Sliding window] 최대 매출

값진 2021. 7. 28. 17:28

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
Comments