카테고리 없음
알고리즘 연습 - 최대 매출 (Sliding Window)
updown
2021. 6. 23. 00:48
아래 강의를 보면서 연습하고 기록하고 있습니다
자바(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));
}
}
참고