728x90
1. 문제
https://www.acmicpc.net/problem/2559
N개의 수열 중 K만큼 연속적인 합을 구한 뒤, 그 중 가장 큰 합을 출력한다.
2. 풀이
1. sum, MAX 변수를 만들고 숫자를 받아가면서 sum과 queue에 더한다.
2. queue의 사이즈가 5가 되었다면 최대값을 다시 비교하고, 다음 값 비교를 위해 sum에서 큐의 가장 앞 원소(front)를 뺀다.
3. 최대값을 출력한다.
import java.io.*;
import java.util.*;
public class BOJ_2559_수열 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
st = new StringTokenizer(in.readLine());
int MAX = Integer.MIN_VALUE;
int sum = 0;
Queue<Integer> queue = new LinkedList<>();
for(int n=0;n<N;n++) {
int num = Integer.parseInt(st.nextToken());
queue.offer(num);
sum += num;
if(queue.size()==K) {
MAX = Math.max(MAX,sum);
sum -= queue.poll();
}
}
System.out.println(MAX);
}
}
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 10709 기상캐스터 - JAVA (0) | 2022.02.16 |
---|---|
[BOJ] 2527 직사각형 - JAVA (0) | 2022.02.16 |
[BOJ] 2304 창고 다각형 - JAVA (0) | 2022.02.14 |
[BOJ] 1244 스위치 켜고 끄기 - JAVA (0) | 2022.02.13 |
[BOJ] 2628 종이자르기 - JAVA (0) | 2022.02.13 |
댓글