[๋ฐฑ์ค] 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (Node.js)
์ ๊ทผ๋ฐฉ์
์ฒ์์ ํ๊ธฐ ์์ํ์ ๋๋, ์ฃผ์ด์ง ๋ฐฐ์ด์ 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๋ฒ ๋งํฌ