https://www.acmicpc.net/problem/2559
1. 아이디어
연속된 날짜에서 온도의 합의 최댓값을 구해야하는 문제로 구간의 길이가 고정되어 있어서 누적합을 활용해서 해결했다.
2. 문제풀이
누적합 배열을 만들고 순회를 하며 온도의 최댓값을 갱신해나가며 정답을 찾으면 간단하게 해결할 수 있다.
3. 코드
import java.io.*;
import java.util.*;
public 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 K = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int[] prefixSum = new int[1 + N];
for (int i = 1; i <= N; i++) {
prefixSum[i] = prefixSum[i - 1] + arr[i - 1];
}
// 연속된 온도의 합이 음수일 수 있어서 Integer.MIN_VALUE로 초기화
int ans = Integer.MIN_VALUE;
for (int i = K; i <= N; i++) {
ans = Math.max(ans, prefixSum[i] - prefixSum[i - K]);
}
System.out.println(ans);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 10569번 - 다면체 [Java] (0) | 2024.12.02 |
---|---|
[백준] 15829번 - Hashing [Java] (0) | 2024.12.02 |
[백준] 1439번 - 뒤집기 [Java] (0) | 2024.12.02 |
[백준] 2217번 - 로프 [Java] (0) | 2024.12.02 |
[백준] 1541번 - 잃어버린 괄호 [Java] (0) | 2024.12.02 |