새소식

반응형
250x250
Baekjoon/Silver

[백준] 구간 합 - 11659_구간 합 구하기 Java[자바]

  • -
728x90
반응형

 

구간의 합을 구하는 문제이다.

 

이렇게 구간의 합을 구하는 문제는 반복문을 계속 돌리게 되면 시간을 더욱 낭비하게 된다.

 

이러한 문제는 구간 합 배열을 선언해준뒤 적용하여 문제를 풀 수 있다.

 

구간 합 배열은 i번째 인덱스에 있는 값이 i번째 전의 모든 인덱스에 해당하는 값에 i번째 인덱스에 해당하는 값을 넣는 것.

 

선언하는 방식 ==>  S[ i ] = S[ i - 1 ] + A [ i ]

 

위의 합 배열만 잘 활용하면 무난하게 풀 수 있는 문제이다.

 

 

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());
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        long[] sumArr = new long[N + 1];
        for(int i = 1; i <= N; i++) {
            sumArr[i] = sumArr[i - 1] + Integer.parseInt(st.nextToken());
        }
        for(int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int I = Integer.parseInt(st.nextToken());
            int J = Integer.parseInt(st.nextToken());
            sb.append(sumArr[J] - sumArr[I - 1] + "\n");
        }
        System.out.println(sb);
    }
}

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.