Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

Jieunny 2023. 2. 17. 13:15

๐Ÿ“Œ  ๋ฌธ์ œ

๋‘ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(Least Common Multiple)๋ž€ ์ž…๋ ฅ๋œ ๋‘ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2์™€ 7์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 14๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •์˜๋ฅผ ํ™•์žฅํ•ด์„œ, n๊ฐœ์˜ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” n ๊ฐœ์˜ ์ˆ˜๋“ค์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. n๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด arr์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ์ด ์ˆ˜๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.์ œํ•œ ์‚ฌํ•ญ

  • arr์€ ๊ธธ์ด 1์ด์ƒ, 15์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • arr์˜ ์›์†Œ๋Š” 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์•„์ด๋””์–ด

์ฒ˜์Œ ํ’€์ด๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ ์ •๋ง์ •๋ง์ •๋ง ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ..

๋‘๋ฒˆ์งธ๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ด์šฉํ•ด์„œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ , '์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = (a * b) / ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜' ๋ผ๋Š” ์ ์„ ์ด์šฉํ•œ ํ’€์ด

 

โœ๏ธ  ํ’€์ด

1. while์„ ์“ฐ๊ณ , ๊ทธ๋•Œ๋งˆ๋‹ค for๋ฌธ์„ ๋Œ์•„์•ผํ•˜๋Š” ํ’€์ด..

๋‹น์—ฐํžˆ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ ๊ฐ’์„ *2, *3 ํ•ด์ฃผ๋ฉด์„œ ๋ฐฐ์—ด ์•ˆ์˜ ์š”์†Œ๋“ค๋กœ ๋‚˜๋ˆ ์ง€๋Š”์ง€ ํ™•์ธ

function solution(arr) {
  var answer = 0;
  let max = arr[arr.length-1];
  let returnValue = dividedReturn(arr, max);
  
  while(returnValue === false){
    returnValue = dividedReturn(arr, max);
    max = max * 2;
  }
  answer = max / 2;
  
  return answer;
}

function dividedReturn(arr, max) {
  arr.sort((a,b)=>a-b);
  let divided = true;

  for(let i=0; i<arr.length-1; i++){
    if(max % arr[i] !== 0) {
      divided = false; 
      break;
    }
  } 

  return divided;
}

 

2. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ํ’€์ด

function solution(arr) {
  let answer = 1;
  for(let i of arr){
    answer = minMulti(answer, i);
  }
  
  return answer;
}

function minMulti(a, b){  // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
  return (a*b) / gcd(a,b);
}

function gcd(a, b) { // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
  const remainder = a % b;  
  if (remainder === 0) return b;  
  return gcd(b, remainder);  
}