알고리즘/알고리즘 코딩테스트_자바편(책)

백준_11659번_구간합구하기

그기고기 2024. 1. 31. 23:57
728x90
반응형
SMALL
import java.util.*;
public class day1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt(); // 1번째 줄에 수의 개수 N 입력
		int M = sc.nextInt(); // 합을 구해야 하는 횟수 M 입력
		int arr [] = new int [N+1]; // N 개의 수를 넣을 배열 
		
		// 편하게 1부터 입력받게 함.
		for(int i = 1 ; i <= N ; i++) {
			
			arr [i] = sc.nextInt();
			//System.out.println(arr[i]);
			
		}
		
		int arr_i [] = new int [M+1];
		int arr_j [] = new int [M+1];
		
		for(int j = 1 ; j <= M ; j++) {
			
			arr_i[j] = sc.nextInt();
			arr_j[j] = sc.nextInt();
//			System.out.print(arr_i[j] + " " + arr_j[j]);
//			System.out.println();
		}
		
		int arr_sum [] = new int [M+1];
		
		for(int a = 1 ; a <= M; a++) {
			
			for(int b = arr_i[a]; b <= arr_j[a] ; b++) {
				
				arr_sum[a] += arr[b];
				
			}
			System.out.println(arr_sum[a]);
		}
		
		
		
		
	}

}

이렇게 하면 시간초과 떴음 ..

 

 

 

import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt(); // 1번째 줄에 수의 개수 N 입력
		int M = sc.nextInt(); // 합을 구해야 하는 횟수 M 입력
		int arr [] = new int [N+1]; // N 개의 수를 넣을 배열 
		
		// 편하게 1부터 입력받게 함.
		for(int i = 1 ; i <= N ; i++) {
			
			arr [i] = sc.nextInt();
			//System.out.println(arr[i]);
			
		}
		
		int arr_i [] = new int [M+1];
		int arr_j [] = new int [M+1];
		
		for(int j = 1 ; j <= M ; j++) {
			
			arr_i[j] = sc.nextInt();
			arr_j[j] = sc.nextInt();
//			System.out.print(arr_i[j] + " " + arr_j[j]);
//			System.out.println();
		}
		
		int arr_sum [] = new int[N+2];
		
		// arr_sum 에 넣어주기.
		for(int a = 1 ; a <= N; a ++) {
			
			arr_sum[a] = arr[a] + arr_sum[a-1];
//			System.out.println(arr_sum[a]);
		}
		
		for(int b = 1; b <= M; b++) {
			
			System.out.println(arr_sum[arr_j[b]] - arr_sum[arr_i[b]-1]);
		}
		
		
	}

}

728x90
반응형
LIST