[코딩테스트] 백준 11659 자바

Henson·2025년 5월 14일

코딩테스트

목록 보기
3/50
post-thumbnail

백준 11659

백준 11659 문제

import java.io.*;
import java.util.*;

public class Boj11659 {

    public static void main(String[] args) throws IOException {
        // 한 줄에 최대 10만개의 많은 숫자가 들어올 수 있기 때문에 BufferedReader와 StringTokenizer를 사용
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int numCount = Integer.parseInt(st.nextToken()); // 숫자의 개수
        int questionCount = Integer.parseInt(st.nextToken()); // 질의의 개수

        long[] sumArr = new long[numCount + 1]; // 합 배열 선언, 0번째 인덱스를 없는 거라 생각하기 위해 +1를 해준다.

        st = new StringTokenizer(br.readLine());
        for (int i = 1; i < sumArr.length; i++) {
            sumArr[i] = sumArr[i - 1] + Integer.parseInt(st.nextToken()); // 이전 합 배열의 값과 현재의 값을 더하여 할당
        }

        // 입력된 합 배열 j의 값에 합 배열 i-1의 값을 빼면 된다.
        for (int q = 0; q < questionCount; q++) {
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            System.out.println(sumArr[j] - sumArr[i - 1]);
        }
    }
}

풀이

  1. 한 줄에 최대 10만개의 많은 숫자가 들어올 수 있기 때문에 BufferedReader와 StringTokenizer를 사용
  2. 0번째 인덱스를 없는 거라 생각하고 합 배열의 크기를 +1하여 선언한다.
  3. 이전 합 배열 인덱스의 값과 현재의 값을 더하여 합 배열의 할당한다.
  4. 입력된 시작 인덱스와 마지막 인덱스를 ij 변수에 할당하고, sumArr[j] - sumArr[i - 1]로 계산하여 출력한다.
profile
세계 최고의 개발자가 되고 말겠어.

0개의 댓글