๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 11659 ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 29.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/11659

  • ์ˆ˜ N๊ฐœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, i๋ฒˆ์งธ ์ˆ˜๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. 
  • ์…‹์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ i์™€ j๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ์ด M๊ฐœ์˜ ์ค„์— ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ i๋ฒˆ์งธ ์ˆ˜๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์ฒ˜์Œ์—๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์„œ ์ผ์ผ์ด ๋”ํ•˜๋ฉด ์‰ฝ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ’€ ๊ฒฝ์šฐ, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๊ตฌ๊ฐ„ํ•ฉ์„ ์ €์žฅํ•  N + 1 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  • ์ˆซ์ž๋“ค์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ์ฐจ๋ก€๋Œ€๋กœ ๋”ํ•ด์ฃผ๊ณ  ๋”ํ•œ ๊ฐ’์„ ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์ˆœ๋ฒˆ์— ์ €์žฅํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ 1 ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ๋”ํ•˜๋Š”๋ฐ ์“ฐ๊ธฐ์œ„ํ•ด ์„ ์–ธํ•ด ๋†“์€ ๋ณ€์ˆ˜์— 1์„ ๋”ํ•˜๊ณ  ๋ฐฐ์—ด ์ฒซ๋ฒˆ์งธ ๊ฐ’์— 1์„ ๋„ฃ๋Š”๋‹ค.
  • ๋‘๋ฒˆ์งธ๋กœ ๋„˜์–ด๊ฐ€์„œ 3์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ์œ„์—์„œ ์ผ๋˜ ๋ณ€์ˆ˜ ๊ฐ’ 1์— 3์„ ๋”ํ•ด์„œ ๋ฐฐ์—ด ๋‘๋ฒˆ์งธ ๊ฐ’์— 4๋ฅผ ๋„ฃ๋Š”๋‹ค. 
  • ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ฐจ๋ก€๋Œ€๋กœ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ๋”ํ•ด์ฃผ๊ณ  ๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๊ตฌํ•  ๊ตฌ๊ฐ„ํ•ฉ์˜ ๋์ ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐฐ์—ด ๊ฐ’์—์„œ ์‹œ์ž‘์  ๋ณด๋‹ค 1 ์ž‘์€ ๋ฐฐ์—ด ๊ฐ’์„ ๋นผ๋ฉด ๊ตฌ๊ฐ„ํ•ฉ์ด ๋œ๋‹ค.
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ์–ด๋Š์ง€์ ๊นŒ์ง€ ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ, ๋งŒ์•ฝ ๋ฐฐ์—ด์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐฐ์—ด ๋ฒ”์œ„ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฏ€๋กœ ๋ฐฐ์—ด ๊ฐ’์€ index 1๋ถ€ํ„ฐ ์ €์žฅํ•œ๋‹ค.

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • X

๋‚˜๋ฆ„ ์‰ฝ๊ฒŒ ์ž˜ ํ’€์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค! (ํ˜น์‹œ ์ด๊ฒƒ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๊ธดํ•˜๋‹ค ใ…Ž...)

์ฝ”๋“œ

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

public class BOJ11659 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        StringTokenizer st = new StringTokenizer(br.readLine());

        // ์ˆ˜์˜ ๊ฐœ์ˆ˜
        int N = Integer.parseInt(st.nextToken());

        // ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ ์ˆ˜
        int M = Integer.parseInt(st.nextToken());

        // ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ์ €์žฅํ•  ๋ฐฐ์—ด
        int sum[] = new int[N + 1];

        StringTokenizer st2 = new StringTokenizer(br.readLine());

        // ๊ตฌ๊ฐ„๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•  ๋ณ€์ˆ˜
        int s = 0;

        for(int i = 1; i <= N; i++){
            int n = Integer.parseInt(st2.nextToken());

            // ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ i๋ฒˆ์งธ ๋ฐฐ์—ด์—
            // i๋ฒˆ์งธ๊นŒ์ง€ ์ˆซ์ž๋“ค์˜ ํ•ฉ์„ ์ €์žฅ
            s = s + n;

            sum[i] = s;
        }

        // ๊ตฌ๊ฐ„ํ•ฉ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต
        for(int i = 0; i < M; i++){
            StringTokenizer st3 = new StringTokenizer(br.readLine());

            // ์‹œ์ž‘์ 
            int start = Integer.parseInt(st3.nextToken());

            // ๋์ 
            int end = Integer.parseInt(st3.nextToken());

            // ๊ตฌ๊ฐ„์˜ ํ•ฉ์€ ๋์ ๊นŒ์ง€ ๋”ํ•œ ๊ฐ’๊ณผ ์‹œ์ž‘์  ์ „๊นŒ์ง€ ๋”ํ•œ ๊ฐ’์„
            // ๋นผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ sum[end] - sum[start - 1]์„ ์ถœ๋ ฅ
            sb.append(sum[end] - sum[start - 1] + "\n");
        }

        System.out.println(sb);
    }
}