Problems & Solutions

2559 수열

yeahzzz 2022. 8. 8. 20:36
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class Main{

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		List<Integer> list = new ArrayList<>();
		st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
		int K = Integer.parseInt(st.nextToken());
		int sum[] = new int[N+1];
		st = new StringTokenizer(br.readLine());
		for(int i = 1; i <=N; i++) {
			sum[i] = sum[i-1]+Integer.parseInt(st.nextToken());
		} //누적합 구하고 
		for(int i = K; i <= N; i++) {
			list.add(sum[i] - sum[i-K]);
		}
		System.out.println(Collections.max(list));
		
	}

}

 

누적합 + arrayList 사용해서 구간합 append 해주고 Collections.max() 함수로 최댓값 구해주었는데.....

이클립스에서 컴파일하면 오류 하나 없이 매우 잘 나온다. 

하지만 문제는

 

......................?

 

차라리 내 목숨을 가져가라............#mood

알바하다 눈물 훔친 썰 푼다

 

도대체 왜 ArrayList 쓰면 계속 런타임 에러가 뜨는건지 심지어 이유도 여러가지다.

분명히 인덱스랑 범위도 잘 맞췄는데 도대체 왜???

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
*/
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		//List<Integer> list = new ArrayList<>();
		
		st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		int sum[] = new int[N+1];
		st = new StringTokenizer(br.readLine());
		
		for(int i = 1; i <=N; i++) {
			sum[i] = sum[i-1]+Integer.parseInt(st.nextToken());
		} //누적합 구하고 
		int max = Integer.MIN_VALUE;
		for(int i = K; i <= N; i++) {
			//list.add(sum[i] - sum[i-K]);
			int acc_sum = sum[i] - sum[i-K];
			max = Math.max(max,acc_sum);
		}
		//System.out.println(Collections.max(list));
		System.out.println(max);
	}

}

 

결국은 ArrayList 포기하고 max 값 계속 갱신하면서 Math.max 써서 통과했다는.......

이클립스에서는 잘만 나오는데 뭐가 문제냐고!!!! 답답하다 증말