12847 꿀 아르바이트 문제 링크
문제

#1
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int start = 0;
int end = M;
long answer = 0;
for(int i=start; i<end; i++) {
answer+=arr[i];
}
long max = answer;
while (end<N) {
max = max - arr[start] + arr[end];
answer = Math.max(answer, max);
start++;
end++;
}
System.out.println(answer);
}
}
answer = Math.max(answer, answer-arr[start]+arr[end]); 이거를
max = max - arr[start] + arr[end]; answer = Math.max(answer, max); 이렇게 바꿈
- 첫 코드는
answer에서 arr[start]를 두 번 빼는 꼴임
- answer를 갱신할 때 (슬라이딩 윈도우의 개념을 잘못 적용해서)
- arr[start]를 빼는 코드에서
- 인데 answer를 갱신할 때 arr[start]를 이미 빼줬다는게 이해가 잘 안됨

- 좀 힘겹게 성공..?