๊ด€๋ฆฌ ๋ฉ”๋‰ด

Ming's develop story

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(programmers) - ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต) ๋ณธ๋ฌธ

D E V E L O P ๐Ÿ’ป/์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(programmers) - ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต)

Ming 2022. 2. 16. 22:24

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

 

ํ’€์ด

function solution(n, m) {
  var answer = [];
  let a = n;
  let b = m;
  let x;
  // ๋‘ ์ˆ˜๊ฐ€ ๊ฐ™์€๊ฒฝ์šฐ
  if (n === m) {
    return [n, m];
  }
  // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
  if (n > m) {
    while (m > 0) {
      let temp = m;
      m = n % m;
      n = temp;
    }
    answer.push(n);
    //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    let x = (a * b) / n;
    answer.push(x);
  } else if (m > n) {
    while (n > 0) {
      let temp = n;
      n = m % n;
      m = temp;
    }
    answer.push(m);
    //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    let x = (a * b) / m;
    answer.push(x);
  }
  return answer;
}

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ช‡๊ฐ€์ง€ ์žˆ๋Š”๋ฐ ๊ทธ์ค‘ ์ดํ•ด๋งŒ ํ•œ๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” '์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•'์ด ์žˆ๋‹ค.

'์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•'์ด๋ž€ ๋‚˜๋ˆ—์…ˆ๋งŒ ๋ฐ˜๋ณตํ•ด์„œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๋ฐ,

์˜ˆ๋ฅผ๋“ค์–ด, 0๋ณด๋‹ค ํฐ ๋‘๊ฐœ์˜ ์ž์—ฐ์ˆ˜ a, b๊ฐ€ ๊ฐ๊ฐ 6 ๊ณผ 4 ๋ผ๊ณ  ํ•˜๋ฉด  b(์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” b๋Š” a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€)๊ฐ€ 0 ๋ณด๋‹ค ํฌ๋ฉด ๊ณ„์†ํ•ด์„œ ๋‚˜๋ˆ—์…ˆ์„ ๋ฐ˜๋ณต์‹œํ‚ค๊ณ  a๋ฅผ b๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋‚˜์˜ค๋Š” ๋•Œ์˜ a ๊ฐ’์ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋˜๋Š”๊ฒƒ์ด๋‹ค.

 

1. a = 6, b = 4 ๋ผ๋ฉด ๋‚˜๋จธ์ง€๊ฐ€ 2 ์ด๊ณ  ๊ทธ ๋‹ค์Œ์—” a = 4, b= 2๊ฐ€ ๋œ๋‹ค.

2. a = 4, b = 2 ๋ผ๋ฉด ๋‚˜๋จธ์ง€๊ฐ€ 0 ์ด๊ณ  a = 2, b = 0 ์ด๋ฏ€๋กœ 

์ด ๋‘ ์ž์—ฐ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 2๊ฐ€ ๋˜๋Š”๊ฒƒ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ๋Š” ์–ด๋– ํ•œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋Š” ์ด์ƒ ๊ณ„์† ๋ฃจํ”„๋ฌธ์„ ๋Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด while๋ฌธ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

๊ทธ ํ›„ answer.push()๋ฅผ ํ†ตํ•ด ๋ฆฌํ„ด๊ฐ’์— ์ €์žฅ์„ ํ•ด์ค€๋‹ค.

 

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

'์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = 0๋ณด๋‹ค ํฐ ๋‘ ์ˆ˜์˜ ๊ณฑ / ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜' ๋ผ๋Š” ๊ณต์‹์„ ์ด์šฉํ•˜๋ฉด 

์œ„์™€๊ฐ™์ด ์‰ฝ๊ฒŒ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์—์„œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ ์ž์—ฐ์ˆ˜ m ๊ณผ n ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ๊ธฐ ์ „ ๋ฏธ๋ฆฌ m, n ๊ฐ’์„ ๊ฐ๊ฐ a, b์— ์ €์žฅํ•ด์ค€ ๋’ค ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด ๋‘” x์— ๋‹ด์•„ answer ๋ฐฐ์—ด์— ๋‹ค์‹œ ๋„ฃ์–ด์คŒ์œผ๋กœ์จ ์›ํ•˜๋Š” [์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜]์˜ ๋ฆฌํ„ด๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‘ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด ๋จผ์ € ์œ„์—์„œ ๊ฑธ๋Ÿฌ์ฃผ์—ˆ๋‹ค.

(๋ฐ˜๋ณต๋ฌธ ๋ฐ‘์— ์ € ์กฐ๊ฑด์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์ด ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์„ฑ์ด ์•ˆ์ข‹์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•œ๋‹ค) 

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด์ค‘ ์ •๋ง ๊ฐํƒ„ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด๋ณธ๋‹ค.

function solution(a, b) {
	let x;
    for(let ab = a * b; r = a % b; a = b, b = r){}
    return [b, ab/b];
}

์ง„์งœ ๋„ˆ๋ฌด ์†Œ๋ฆ„๋‹์•˜๋‹ค. 

์ฒ˜์Œ ์ € ์ฝ”๋“œ๋ฅผ ๋ดค์„๋•Œ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€ for๋ฌธ์„ ๋ช‡๊ฐœ์›” ๋งŒ์— ๋‹ค์‹œ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด์•˜๋‹ค.

์ € ์ฝ”๋“œ๋กœ ์‹คํ–‰ ํ•ด๋ดค์„๋•Œ ab๊ฐ€ ์„ ์–ธ์ด ์•ˆ๋˜์–ด์žˆ์–ด์„œ let x; ๋ฐ‘์— let ab๋ฅผ ์„ ์–ธํ•ด์คฌ๋Š”๋ฐ๋„

์‚ฌ์‹ค์ƒ ๋ฌธ์ œ๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ ๊ทธ๋Ÿฐ์ง€ ์•„๋‹ˆ๋ฉด ์ฝ”๋“œ๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š์€๊ฑด์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž˜ ์ž‘๋™ํ•˜์ง„ ์•Š์•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์†Œ๋ฆ„์ด ๋‹์•˜๋˜ ๋ถ€๋ถ„์€ ์ € ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•„๋‹Œ for๋ฌธ์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ๊ฒŒ๋ผ์„œ ์ด๋‹ค.

for (์ดˆ๊ธฐ์‹; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹) {
	์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹คํ–‰๋ฌธ;
}

for๋ฌธ์€ ์œ„์™€ ๊ฐ™์€๋ฐ ๊ตฌ์„ฑํ•˜๋Š” ์ดˆ๊ธฐ์‹, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์€ ๊ฐ๊ฐ ์ƒ๋žต๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‰ผํ‘œ ์—ฐ์‚ฐ์ž(,)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ดˆ๊ธฐ์‹์ด๋‚˜ ์ฆ๊ฐ์‹์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋Š”๊ฒƒ์€ ์—ฌ๊ธฐ์„œ ab๋ผ๋Š”๊ฒƒ์€ a * b ๋ผ๊ณ  ์ดˆ๊ธฐ์‹์—์„œ ์„ ์–ธ์„ ํ•ด์ฃผ๊ณ ,

์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ผ๋ฉด ์ € ๋ฐ˜๋ณต๋ฌธ์€ ๊ณ„์† ์‹คํ–‰์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— r์ด 0์ด ๋‚˜์˜ค๋ฉด false๊ฐ€ ๋ฐ˜ํ™˜๋˜์–ด ๋ฐ˜๋ณต๋ฌธ์ด ๋ฉˆ์ถ”๊ธฐ ๋•Œ๋ฌธ์— 0์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๋‚˜๋ˆ„๊ธฐ๊ฐ€ ๋ฐ˜๋ณต๋˜๋„๋ก ์กฐ๊ฑด์‹์— ๋„ฃ์–ด์ฃผ์—ˆ๊ณ , 

๋งˆ์ง€๋ง‰์œผ๋กœ ์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๊ฐ์‹(๋‹ค์Œ for๋ฌธ์ด ๋ฐ”๋€”๋•Œ ์ ์šฉ์ด ๋  ๋ถ€๋ถ„, ๋ณดํ†ต์˜ for๋ฌธ์—์„  i++์ฒ˜๋Ÿผ ์ฆ๊ฐ€ ์‹œํ‚ด)์— a = b, b = r ์ด๋ผ๋Š” ์ฆ๊ฐ์‹์„ ๋„ฃ์–ด์ฃผ์–ด '์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•'์„ ์™„์„ฑ์‹œ์ผฐ๋‹ค.

 

๋‚˜๋Š” ๊ทธ์ € ์ด๋•Œ๊นŒ์ง€ for๋ฌธ์„ for(let i = 0; i < arr.length; i++){}์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์™”๋Š”๋ฐ ์ •๋ง ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ for๋ฌธ์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ์ •ํ•ด์ง„ ํ‹€์— ๊ฐ‡ํžˆ์ง€ ๋ง๊ณ  ๊ทธ ํ‹€์„ ๊นฐ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๊ณ ๋ฅผ ํ•˜๊ณ ์‹ถ๋‹ค๊ณ , ์–ด๋– ํ•œ ๊ฒƒ์„ ๋ฐ”๋ผ๋ณผ ๋•Œ ๋‹ค์–‘ํ•œ ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ๋Š๊ปด์กŒ๋‹ค.

Comments