[백준] S3 11659번 구간 합 구하기 4 (Java)

숙취엔 꿀물.·2024년 2월 19일

백준(Backjoon)

목록 보기
7/15

https://www.acmicpc.net/problem/11659

해당 문제는 'Do it! 알고리즘 코딩테스트 자바 편'을 보면서 공부한 내용이에요.

👉 문제

우선, 둘째 줄에서 N개의 수를 입력받음과 동시에 합 배열(S[])을 생성한다.

예시로 5 4 3 2 1 인 경우의 합 배열은 5 9 12 14 15 가 되겠다.
구한 합 배열에서 구간 i와 j에 따라서 S[j] - S[i-1]을 해주면 구간 합을 간단하게 구할 수 있다.


👉 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _11659_1 {
    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 M = Integer.parseInt(st.nextToken());
        long[] S = new long[N + 1];

        st = new StringTokenizer(br.readLine());
        for (int i = 1; i <= N; i++) {
            S[i] = S[i - 1] + Integer.parseInt(st.nextToken());
        }

        for (int k = 0; k < M; k++) {
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            System.out.println(S[j] - S[i - 1]);
        }
    }
}

입력받는 구간 i와 j는 1 <= i <= j <= N이므로 N보다 1 큰 크기로 선언해준다.

👉 성능

profile
단단하게 오래가고자 하는 백엔드 개발자

0개의 댓글