ALGORITHM

WONNY_LOGยท2023๋…„ 4์›” 17์ผ
0

**[CodeKata] 1DAY | JS**

๐Ÿ’ก CodeKataํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์—ฐ์Šต๊ณผ ๋ฐ˜๋ณต์„ ํ†ตํ•ด ๊ธฐ์ˆ ์„ ์—ฐ๋งˆํ•˜๋„๋ก ๋•๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต

๐Ÿ“ ๋ฌธ์ œ

twoSumํ•จ์ˆ˜์— ์ˆซ์ž๋ฐฐ์—ด๊ณผ 'ํŠน์ • ์ˆ˜'๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด,๋”ํ•ด์„œ 'ํŠน์ • ์ˆ˜'๊ฐ€ ๋‚˜์˜ค๋Š” index๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ returnํ•ด ์ฃผ์„ธ์š”.

nums: ์ˆซ์ž ๋ฐฐ์—ด
target: ๋‘ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ•ฉ๊ณ„
return: ๋‘ ์ˆ˜์˜ index๋ฅผ ๊ฐ€์ง„ ์ˆซ์ž ๋ฐฐ์—ด

์˜ˆ๋ฅผ ๋“ค์–ด,

nums์€ [4, 9, 11, 14]target์€ 13nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?๊ทธ๋Ÿฌ๋ฉด [0, 1]์ด return ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ๊ฐ€์ •
target์œผ๋กœ ๋ณด๋‚ด๋Š” ํ•ฉ๊ณ„์˜ ์กฐํ•ฉ์€ ๋ฐฐ์—ด ์ „์ฒด ์ค‘์— 2๊ฐœ ๋ฐ–์— ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

โœ๏ธ ๋‚˜์˜ ํ’€์ด

  • ๋ฌธ์ œ์—์„œ ๋‚˜์—๊ฒŒ ๋ฌป๊ณ ์žํ•˜๋Š”๊ฒŒ ๋ฌด์—‡์ธ์ง€ ๋จผ์ € ํŒŒ์•…ํ–ˆ๋‹ค.
  1. twoSum์— ์ฃผ์–ด์ง„ ์ธ์ž๋Š” ์ˆซ์ž๋ฐฐ์—ด์ด๋‹ค.
  2. twoSum์˜ ์ธ์ž1๊ณผ ์ธ์ž์— ๋‹ด์•„์ค„ ํŠน์ •์ˆ˜1์˜ ํ•ฉ์ด target.value์™€ ๊ฐ™์•„์•ผํ•œ๋‹ค.
  3. ์œ„์˜ ์ธ์ž1๊ณผ ํŠน์ •์ˆ˜1์˜ index๊ฐ’์„ returnํ•œ๋‹ค.
  • ๋ฌธ์ œํ•ด๊ฒฐ ๋ฐฉ์‹
  1. for๋ฌธ์„ ์ด์šฉํ•ด ์ธ์ž1.value ๋Œ๋ฆฌ๊ธฐ
  2. for๋ฌธ ์•ˆ for๋ฌธ์„ ์ด์šฉํ•ด ํŠน์ •์ˆ˜1.value ๋Œ๋ฆฌ๊ธฐ
  3. if๋ฌธ์„ ์ด์šฉํ•ด ์ธ์ž1๊ณผ ํŠน์ •์ˆ˜1์˜ ํ•ฉ์ด target์ผ๊ฒฝ์šฐ
  4. return twoSum์˜ ์ธ๋ฑ์Šค๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
//๋‚ด๊ฐ€ ์ฒ˜์Œ ๊ตฌํ˜„ํ•œ ๋กœ์ง
const twoSum = (nums, target) => {

  for (let i = 0; i < nums.length; i++){
    for (let j = 0; j < nums.length; j++){
      if (target == nums[i] + nums[j]){
    return nums[i, j]
      }
    }
  }
};
//ํŒ€์›๊ณผ ํ•จ๊ป˜ํ•œ ๋” ๊ฐ„๋‹จํ•œ ๋กœ์ง
const twoSum = (nums, target) => {

  for (let i = 0; i < nums.length-1; i++){
    for (let j = i+1; j < nums.length; j++){

      if(target == nums[i] + nums[j]){
        return [i, j]
      }
    }
  }
};

๋กœ์ง ์ž์ฒด๊ฐ€ ์งง์•„์ง„๊ฑด ์•„๋‹ˆ์ง€๋งŒ,๐Ÿ‘† i๋ฅผ ์„ ์–ธํ•ด์ค€ for๋ฌธ์•ˆ์—ย i < nums.length-1์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊นŒ์ง€๋งŒ for๋ฌธ์„ ๋Œ๋ฆฌ๊ณ โœŒ๏ธ j๋ฅผ ์„ ์–ธํ•ด์ค€ for๋ฌธ์•ˆ์—ย j = i+1๋ฅผ ์‚ฌ์šฉํ•ด j๊ฐ€ i์˜ ๋‹ค์Œ ์ธ๋ฑ์Šค์™€ ๋น„๊ต ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์คฌ๋‹ค

๐Ÿ‘‰ ์ด์ค‘ for๋ฌธ ์†์—์„œ ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์€ ๋œ์–ด์ฃผ๊ณ  ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋‹ค.

**[CodeKata] 2DAY | JS**

๐Ÿ“ ๋ฌธ์ œ

reverse ํ•จ์ˆ˜์— ์ •์ˆ˜์ธ ์ˆซ์ž๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.๊ทธ ์ˆซ์ž๋ฅผ ๋’ค์ง‘์–ด์„œ returnํ•ด์ฃผ์„ธ์š”.

x: ์ˆซ์žreturn: ๋’ค์ง‘์–ด์ง„ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜!

์˜ˆ๋“ค ๋“ค์–ด,x: 1234return: 4321

x: -1234return: -4321

x: 1230return: 321

โœ๏ธ ๋‚˜์˜ ํ’€์ด

  • ๋ฌธ์ œํ•ด๊ฒฐ ๋ฐฉ์‹
  1. ์ˆซ์ž์ธ ์ธ์ž๋ฅผ ์ŠคํŠธ๋งํ™” ์‹œํ‚จํ›„ ํ•œ๊ธ€์ž์”ฉ ์ž๋ฅด๊ธฐ
  2. ์•ž์„œ ์™„์„ฑ๋œ ๋ฐฐ์—ด์„ reverse ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด ๋’ค์ง‘๊ธฐ
  3. ๋’ค์ง‘ํžŒ ๋ฐฐ์—ด์† indexOf('-') ๋ถ„๋ฆฌ์‹œํ‚ค๊ธฐ
  4. ๋ฌธ์ž์ธ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
const reverse = (x) => {
  const str = x.toString().split('');
  const rev = str.reverse();
  const line = rev.indexOf('-');

  if(line !== -1){
    return Number('-'+rev.splice(0, line).join(''));
  }
  if(rev[0] === '0'){
    return Number(rev.slice(1, rev.length).join(''))
  }
  return Number(rev.join(''))
}

๐Ÿ‘‰ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ •๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€