카테고리 없음

알고리즘 연습 - 최대 매출 (Sliding Window)

updown 2021. 6. 23. 00:48

아래 강의를 보면서 연습하고 기록하고 있습니다

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

문제

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++) // k 번 까지 의 합산
			sum += arr[i];
		answer = sum; // answer는 처음에 sum으
		for (int i = k; i < n; i++) {
			sum += (arr[i] - arr[i - k]); // window 크기의 맨 앞에 값은 빼고 밀고 간 만큼 뒤에 값은 더한다 그러면 한칸 밀고 나간거임
			answer = Math.max(answer, sum); // 기존값과 sum 중에서 더 큰값
		}
		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));
	}
}

 

참고