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

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ถ„์ˆ˜์˜ ๋ง์…ˆ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ถ„์ˆ˜์˜ ๋ง์…ˆ

Jieunny 2023. 2. 3. 17:06

๐Ÿ“Œ  ๋ฌธ์ œ

์ฒซ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer1, denom1, ๋‘ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer2, denom2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • 0 <numer1, denom1, numer2, denom2 < 1,000

 

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

๋ถ„๋ชจ1, ๋ถ„๋ชจ2๋ฅผ ๊ณฑํ•ด์„œ ๊ณตํ†ต ๋ถ„๋ชจ๋กœ ๋งŒ๋“ค๊ณ , ๋ถ„์ž์—๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ถ„๋ชจ๋ฅผ ๊ณฑํ•ด์ค˜์„œ ๋”ํ•ด์ค€๋‹ค.

๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถ„์ž์™€ ๋ถ„๋ชจ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ ๋‚˜๋ˆ ์ค€๋‹ค.

๊ทธ ๊ฐ’์„ answer์— ๋„ฃ๋Š”๋‹ค.

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ๋Š” '์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•'์„ ์‚ฌ์šฉํ•œ๋‹ค.

โž• ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ด๋ž€?

๋”๋ณด๊ธฐ

 โœ”๏ธ ๋‘ ์ž์—ฐ์ˆ˜ ์‚ฌ์ด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 1. ๋‘ ์ˆ˜ ์ค‘์—์„œ ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆˆ๋‹ค.

 2. ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ์ž‘์€ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ์ด๋‹ค.

 3. ๋‚˜๋จธ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ์ž‘์€ ์ˆ˜๋ฅผ ๋‹ค์‹œ ๋‚˜๋จธ์ง€๋กœ ๋‚˜๋ˆˆ๋‹ค.

 4. ๋‚˜๋จธ์ง€๊ฐ€ 0 ์ด ๋  ๋•Œ, ๊ทธ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ์ด๋‹ค.

function gcd(a, b) {
  const remainder = a % b;  
  if (remainder === 0) return b;  
  return gcd(b, remainder);  
}

// ํฐ ์ˆ˜, ์ž‘์€ ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ถ„๊ธฐ ๋‚˜๋ˆŒ ํ•„์š” x
// ์–ด์ฐจํ”ผ ํฐ ์ˆ˜๋กœ ์ž‘์€ ์ˆ˜ ๋‚˜๋ˆ„๋ฉด ๋‚˜๋จธ์ง€๊ฐ€ ์ž‘์€ ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฐ ์ˆ˜, ์ž‘์€ ์ˆ˜๋กœ ๋ฐ”๋€๋‹ค.

 

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

function solution(numer1, denom1, numer2, denom2) {
  var answer = [];

  let sumDenom = denom1 * denom2;
  let sumNumer = (numer1 * denom2) + (numer2 * denom1);
  let maxDiv = 0;

  maxDiv = gcd(sumNumer, sumDenom);

  answer.push(sumNumer / maxDiv);
  answer.push(sumDenom / maxDiv);

  return answer;
}

function gcd(a, b) {
  const remainder = a % b;  
  if (remainder === 0) return b;  
  return gcd(b, remainder);  
}