1. ์ฝ”๋“œ ๋ณ€ํ™˜(๊ณ ์ฐจํ•จ์ˆ˜)

๊ณ ์ฐจํ•จ์ˆ˜ ๋ฌธ์ œ :

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ reduce๋ฉ”์„œ๋“œ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์Šค์Šค๋กœ ์ž‘์„ฑํ•˜๊ณ , ์ง์ ‘ ์„ค๋ช…ํ•œ ๋‚ด์šฉ์„ ์ ์–ด์ฃผ์„ธ์š”.

const filterMaped = arr.filter(x => x % 2 !== 0).map(x => x * 2);
console.log(filterMaped); // [2, 6, 10]

reduce๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ์— ์•ž์„œ ๋‚˜๋Š” ๋จผ์ € ์–ด๋–ค ๋ฐฐ์—ด์ด์—ˆ๊ธธ๋ž˜ ์ฝ˜์†”๋กœ๊ทธ์— [2, 4, 10]์ด๋ผ๋Š” ๋ฐฐ์—ด์ด ์ฐํ˜”๋Š”์ง€๋ฅผ ์ƒ๊ฐ ํ•ด ๋ณด์•˜๋‹ค.

ํ•„ํ„ฐ์™€ ๋งต์„ ๊ฑฐ์ณ๊ฐ„ ๊ณผ์ •์„ ๋ณด๋‹ˆ arr = [1, 2, 3, 4, 5] ๋ผ๊ณ  ์ง์ž‘ํ•œ๋‹ค.

  • pseudocode (์ˆ˜๋„์ฝ”๋“œ)
  1. reduce(function (acc, cur)) ์—์„œ acc(๋ˆ„์ ๊ฐ’) ๊ณผ cur(ํ˜„์žฌ๊ฐ’) ๊ทธ๋ฆฌ๊ณ  ์ดˆ๊ธฐ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์ค„์ง€ ์ƒ๊ฐํ•ด๋ณธ๋‹ค.
  2. ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ ๋งˆ๋‹ค ๊ฐ’์„ ๋„ฃ์–ด์ค„ ๋นˆ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•œ๋‹ค.
  3. ์ดˆ๊ธฐ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  cur์ด ํ™€์ˆ˜์ด๋ฉด cur * 2 ๋ฅผ ํ•ด์ค€๋‹ค.
  4. cur์„ ๋นˆ ๋ฐฐ์—ด์— push ํ•ด์ฃผ๋ฉด์„œ ๋ˆ„์ ๊ฐ’์„ undefined๋กœ ๋งŒ๋“ ๋‹ค.
  5. ๋นˆ ๋ฐฐ์—ด์„ ๋ฆฌํ„ด(๋ฐ˜ํ™˜) ํ•œ๋‹ค.
  • code
let resultArr = [];

const result = arr.reduce(function (acc, cur) {
  if (cur % 2 === 1) {
    resultArr.push(cur * 2);
  }
}, 0);
  • ํ•ด์„ค

๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ acc ,cur ์ˆœ์œผ๋กœ ์ ์–ด๋ณด๋ฉด

  1. 0, 1
  2. undefined, 2
  3. undefined, 3
  4. undefined, 4
  5. undefined, 5

์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋Š” ๋ˆ„์ ๊ฐ’์„ ์ ์šฉ์‹œํ‚ค์ง€ ์•Š๊ณ  cur(ํ˜„์žฌ๊ฐ’)๋งŒ ๋นˆ ๋ฐฐ์—ด์— push๋ฅผ ํ•ด์ฃผ๋Š” ์‹์œผ๋กœ reduce์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ๋ดค๋‹ค. ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.

์ด ๊ณต๋ถ€๋ฅผ ํ†ตํ•ด ๋‚˜๋Š” reduce ๋ฉ”์„œ๋“œ๋Š” ํ™•์‹คํžˆ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉฐ(๋ฐ˜๋ณต๋ฌธ๊ณผ ๋น„์Šทํ•˜๋‹ค) ์ด์ „ ์ฝœ๋ฐฑ์˜ ๋ฆฌํ„ด๊ฐ’๊ณผ ํ˜„์žฌ ์ฝœ๋ฐฑ์˜ ๋ฆฌํ„ด๊ฐ’์„ ๊ฐ€์ง€๊ณ  ํ™œ์šฉํ•˜๊ธฐ์— ์œ ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.




2. ๋ฐ˜๋ณต๋ฌธ 18๋ฒˆ

๋ฐ˜๋ณต๋ฌธ ๋ฌธ์ œ :

์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ 2๋ถ€ํ„ฐ ํ•ด๋‹น ์ˆ˜๊นŒ์ง€์˜ ์†Œ์ˆ˜(prime number)๋“ค์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์˜์‚ฌํ•ญ : ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

let output = listPrimes(18);
console.log(output); // ---> '2-3-5-7-11-13-17'
  • pseudocode(์ˆ˜๋„์ฝ”๋“œ)
  1. ์†Œ์ˆ˜ ๊ฐœ๋… ํŒŒ์•… - 1๊ณผ ์ž๊ธฐ์ž์‹ ์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์•ˆ๋œ๋‹ค.
  • 2๋ถ€ํ„ฐ N-1๊นŒ์ง€์˜ ์ˆ˜ ์ค‘์—์„œ 2์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ฒด๋กœ ๊ฑฐ๋ฅด๊ณ  ๋‚จ์€ ์ˆซ์ž๋“ค ์ค‘์—์„œ 3์˜ ๋ฐฐ์ˆ˜๋กœ ๊ฑฐ๋ฅด๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ œ๊ณฑ๊ทผN ๊นŒ์ง€ ๋‚˜๋ˆ ์„œ ๊ฑธ๋Ÿฌ์ง€์ง€ ์•Š๊ณ  ๋‚จ์€ ์ˆ˜๋“ค์ด ๋ชจ๋‘ ์†Œ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  1. ์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์„ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 2์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ˆœํšŒ๋ฅผ ํ•œ๋‹ค.
  2. true ๊ฐ’์„ ๋„ฃ์–ด์„œ ์ด์ƒ์ด ์—†์œผ๋ฉด ๊ณ„์† ์ˆœํšŒํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค.
  3. ๋‘๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์†Œ์ˆ˜๋ฅผ ์ฐพ์•„์•ผํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ์ˆœํšŒํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค.
  4. ๋ฐ˜๋ณต๋ฌธ์„ 2์”ฉ ์ฆ๊ฐ€์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— 2์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ œ์™ธ์‹œ์ผฐ๊ณ , ๊ทธ๋‹ค์Œ i(3์˜ ๋ฐฐ์ˆ˜) ๋ฅผ j ๋กœ ๋‚˜๋ˆ„๋ฉด์„œ ๋‚˜๋จธ์ง€ ์†Œ์ˆ˜์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ๋“ค์„ ๊ฑฐ๋ฅธ๋‹ค.
  5. ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๊ฑฐ๋ฅด๊ณ  ๋‚จ๊ฒจ์ง„ ๊ฐ’์ด true๊ฐ’์ด๋ฉด ์†Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜์ด๋ฉด ์•Œ๋งž๋Š” ํ˜•์‹์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
let result = "2";

for (let i = 3; i <= num; i += 2) {
  let isReady = true;
  let isPrime = parseInt(Math.sqrt(i));

  for (let j = 3; j <= isPrime; j += 2) {
    if (i % j === 0) {
      isReady = false;

      break;
    }
  }

  if (isReady) {
    result = `${result}-${i}`;
  }
}
return result;

์ด๋Ÿฌํ•œ ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ์„ ๋•Œ, ๋ฐ˜๋ณต๋ฌธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ๋Š” ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ๋กœ ๊ผฝํžŒ๋‹ค.

์†Œ์ˆ˜๋ฅผ ๊ฑธ๋Ÿฌ๋‚ด์•ผ ํ•˜๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜๋˜ ์ ์—์„œ ๋งŽ์ด ํž˜๋“ค์—ˆ๋‹ค.

true๊ฐ’์„ for๋ฌธ ๋ฐ–์—๋‹ค๊ฐ€ ํ• ๋‹นํ•ด์„œ ์‚ฝ์งˆ์„ ํ–ˆ์—ˆ๊ณ , ์ œ๊ณฑ๊ทผ ๊ฐ’์„ ๊ตฌํ•ด๋†“๊ณ  parseInt๋ฅผ ์“ฐ์ง€์•Š์•„์„œ ์‚ฝ์งˆ์„ ๋งŽ์ด ํ–ˆ์—ˆ๋‹ค. ์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ดค์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ๋˜๋Š”์ง€ ์กฐ์ฐจ ๋ชฐ๋ž๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์ด์ œ๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ๋ณต์Šต๋์— ์™„์ „ํžˆ ๋‚˜์˜ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค. ์ด ๋ฌธ์ œ๋งŒ ์™„๋ฒฝํ•˜๊ฒŒ ํŒŒ์•…ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ๋Š” ์ง€์žฅ์ด ์—†์„ ๊ฒƒ์œผ๋กœ ์—ฌ๊ฒจ์ง„๋‹ค.



๐Ÿ‘Š ๋‚ด์ผ์˜ TIW(today I Will)

๋ฐฐ์—ด, ๊ฐ์ฒด, ๊ณ ์ฐจํ•จ์ˆ˜!