๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€] 11659๋ฒˆ: ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4 (Node.js)

JaeBBang 2024. 9. 5. 14:59

 

์ ‘๊ทผ๋ฐฉ์‹

์ฒ˜์Œ์— ํ’€๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ๋Š”, ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์— a๋ฒˆ~b๋ฒˆ๊นŒ์ง€ ์ž๋ฅด๊ณ  ๋”ํ•˜๊ณ  ์ฝ˜์†”!.... ์ด๋ผ๊ณ  ๋„ˆ๋ฌด ์•ˆ์ผํ•˜๊ฒŒ ํ’€์—ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", function (line) {
  input.push(line);
}).on("close", function () {
  const num = input[0].split(" ")[1];
  const arr = input[1].split(" ").map(Number);
  input.splice(0, 2);
  const jogun = input.map((v) => v.split(" "));
  for (let i = 0; i < jogun.length; i++) {
    let start = jogun[i][0];
    let end = jogun[i][1];
    let sum = arr.slice(start - 1, end).reduce((a, b) => a + b, 0);
    console.log(sum);
  }
});

 

์–ด๋””์— ๋‚ด๋†”๋„ ๋ถ€๋„๋Ÿฌ์šด ๋‚ด ์ฝ”๋“œ..๐Ÿ˜ฅ

 

๊ฒฐ๊ณผ๊ฐ’์€ ๊ดœ์ฐฎ๊ฒŒ ๋‚˜์™”์œผ๋‚˜, 

 

๋‹น์—ฐํ•˜๊ฒŒ ๋œจ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ’€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค!

 

์˜ˆ๋ฅผ ๋“ค์–ด [5, 4, 3, 2, 1] ๋ฐฐ์—ด์—์„œ  1๋ถ€ํ„ฐ 3๊นŒ์ง€์˜ ์ธ๋ฑ์Šคํ•ฉ์„ ๊ตฌํ•˜๋ ค๋ฉด

4 + 3 + 2๋ฅผ ๋”ํ•ด์•ผํ•˜๋Š”๊ฑด๋ฐ, ์ด๋Š” ๋งค๋ฒˆ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๋”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N)์ด ๋˜๋Š”๋ฐ, ์ฆ‰ ๋ฐฐ์—ด ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํŠน์ • ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋†“์œผ๋ฉด,

์˜ˆ๋ฅผ ๋“ค์–ด Array[3] - Array[0] ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์„ ๋งค๋ฒˆ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ •ํ•ด์ง„ ๊ตฌ๊ฐ„์—์„œ์˜ ๊ณ„์‚ฐ์„ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ

์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ด ๋ฉ๋‹ˆ๋‹ค.

 

O(N) : ์ž…๋ ฅ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด์„œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒฝ์šฐ. ์ฆ‰, ๋ฐฐ์—ด์—์„œ ๋ถ€๋ถ„ํ•ฉ์„ ๋งค๋ฒˆ ์ง์ ‘ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒํผ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
O(1) : ์ž…๋ ฅ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ. ์ฆ‰, ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ O(1)์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ’€์ด โฐ

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", function (line) {
  input.push(line);
}).on("close", function () {
  // [N, M] ๊ฐ’ ์„ค์ •
  const [N, M] = input[0].split(" ").map(Number);
  // ์ˆœํšŒํ•  ๋ฐฐ์—ด ์„ค์ •
  const arr = input[1].split(" ").map(Number);
  input.splice(0, 2);
  // jogun = [[1, 3], [2, 4], [5, 5]]
  const jogun = input.map((v) => v.split(" "));
  // sumArr = [0, 0, 0, 0, 0, 0]
  const sumArr = Array(N + 1).fill(0);
  for (let i = 1; i <= N; i++) {
    // sumArr = [0, 5, 9, 12, 14, 15]
    sumArr[i] = sumArr[i - 1] + arr[i - 1];
  }
  for (let i = 0; i < M; i++) {
    // jogun[0] = 1, 3
    // jogun[1] = 2, 4
    // jogun[2] = 5, 5
    const [start, end] = jogun[i];
    // ex) jogun[0]์—์„œ๋Š” 1๋ถ€ํ„ฐ 3๊นŒ์ง€์˜ ์ˆซ์ž์˜ ํ•ฉ์ด๋ฏ€๋กœ 12๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.
    // ๋ฏธ๋ฆฌ๊ณ„์‚ฐ๋œ 12์—์„œ 0์„ ๋นผ๋ฉด์„œ ๊ทธ๋Œ€๋กœ 12๋ฅผ ์ถœ๋ ฅ
    const result = sumArr[end] - sumArr[start - 1];
    console.log(result);
  }
});

 

๋ฐฑ์ค€ 11659๋ฒˆ ๋งํฌ

๐Ÿ‘‰ https://www.acmicpc.net/problem/11659