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

[๋ฐฑ์ค€] 24265๋ฒˆ: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ 4 (Node.js)

JaeBBang 2024. 9. 9. 17:35

 

 

์ ‘๊ทผ๋ฐฉ์‹

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„3๊ณผ ๋น„์Šทํ•ด๋ณด์ด์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์˜ ์ž…๋ ฅ ํฌ๊ธฐ n์— ๋Œ€ํ•ด ์„ ํ˜•์ ์œผ๋กœ ์‹คํ–‰๋˜๋”๊ตฐ์š”.

 

MenOfPassion(A[], n) {
      sum <- 0;
      for i <- 1 to n
          for j <- 1 to n
              sum <- sum + A[i] × A[j]; # ์ฝ”๋“œ1
      return sum;
  }

---------------------------------------------------------

for(let i=0; i<n; i++) {
    for(let j=i+1; j<n; j++) {

    }
  }

 

์šฐ์„  ๋ณด๊ธฐ ์‰ฝ๊ฒŒ javascript๋กœ ๋ณ€ํ˜•ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋‚˜๋ˆ ์„œ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ

i๋Š” 0๋ถ€ํ„ฐ n-1๋ฒˆ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ง์€ ์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ์ž˜ ์•Œ๊ณ  ์žˆ๋“ฏ์ด n๋ฒˆ ๋ฐ˜๋ณต์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ

j๋Š” i+1๋ถ€ํ„ฐ n-1๋ฒˆ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 

i = 0 ์ผ ๋•Œ, j๋Š” 1๋ถ€ํ„ฐ n-1๋ฒˆ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

i = 1 ์ผ ๋•Œ, j๋Š” 2๋ถ€ํ„ฐ n-1๋ฒˆ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

i = n-1 ์ผ ๋•Œ๋Š” j = n ์ด๋ฏ€๋กœ n < n ์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์•„ ๋ฐ˜๋ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

i = n-2 ์ผ ๋•Œ๋Š” j = n-1 ์ด๋ฏ€๋กœ ๋”ฑ 1๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ j ๋ฃจํ”„์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ํšŸ์ˆ˜๋Š” ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ์— ์˜ํ•ด

ํ•ญ์˜ ์ด๊ฐฏ์ˆ˜(์ฒซํ•ญ + ๋งˆ์ง€๋ง‰ํ•ญ) / 2 ๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด

n ( n - 1 ) / 2 ๊ฐ€ ๋˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

ํ˜น์‹œ ๋ชจ๋ฅผ ์ฐธ์กฐ๊ธ€์„ ๋‚จ๊ฒจ๋‘๊ณ  ํ’€์ด๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ฐธ์กฐ ๐Ÿ’ฌ

์™œ ์™ธ๋ถ€๋Š” ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€๋งŒ ๊ณ„์‚ฐํ•˜์—ฌ ํ‘ธ๋Š”์ง€?

 

์™ธ๋ถ€์™€ ๋‚ด๋ถ€๋ฅผ ๊ฐ๊ฐ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ „์ฒด ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ์—๋Š”

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ์€ ํ•ญ์ƒ n๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๊ณ ์ •๋œ ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฃผ๋œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€

๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์ด ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์‹คํ–‰๋˜๋Š”์ง€์ž…๋‹ˆ๋‹ค.

 

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ : for(let i=0; i<n; i++) ์œผ๋กœ ํ•ญ์ƒ n๋ฒˆ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ : for(let j=i+1; i<n; j++) ์œผ๋กœ ๊ฐ i์— ๋Œ€ํ•ด ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋‹ฌ์ง€๋ฉด์„œ ์œ„์— ๊ณ„์‚ฐํ–ˆ๋“ฏ์ด

n ( n - 1 ) / 2 ๋ฒˆ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

 

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ ์ž์ฒด๋Š” n๋ฒˆ ๋ฐ˜๋ณต๋˜์ง€๋งŒ, ๋‚ด๋ถ€ ๋ฐ˜๋ณต์€ ๊ฐ i๋งˆ๋‹ค ๋‹ค๋ฅธ ํšŸ์ˆ˜๋กœ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์ฃผ๋œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฒฐ์ •ํ•˜ ๊ฒƒ์€ ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์ด ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์‹คํ–‰๋˜๋Š”์ง€ ์ž…๋‹ˆ๋‹ค.

 

 

 

ํ’€์ด โฐ

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 () {
  // MenOfPassion(A[], n) {
  //     sum <- 0;
  //     for i <- 1 to n
  //         for j <- 1 to n
  //             sum <- sum + A[i] × A[j]; # ์ฝ”๋“œ1
  //     return sum;
  // }
  let n = Number(input[0]);
  n = (n * (n - 1)) / 2;
  console.log(n);
  console.log(2);
});

 

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

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