๐ง Problems
์ฒซ ๋ฒ์งธ ๋ถ์์ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ ``numer1``, ``denom1``, ๋ ๋ฒ์งธ ๋ถ์์ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ ``numer2``, ``denom2``๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๊ธฐ์ฝ ๋ถ์๋ก ๋ํ๋์ ๋ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ์์๋๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
๐ก Solutions
const gcd = (num1, num2) => num2 === 0 ? num1 : gcd(num2, num1 % num2);
const solution = (numer1, denom1, numer2, denom2) => {
const numer = numer1 * denom2 + numer2 * denom1;
const denom = denom1 * denom2;
const frac_gcd = gcd(numer, denom);
return [numer / frac_gcd, denom / frac_gcd];
};
์ฝ๋ ์ค๋ช
์ฐ์ ํต๋ถ์ ํตํด ๋ ๋ถ์์ ๋ถ๋ชจ ๊ฐ์ ๊ฐ๊ฒ ๋ง๋ค์ด์ค ๋ค, ๋ถ์์ ํฉ์ ๊ตฌํด์ค๋๋ค. ๊ทธ๋ ๊ฒ ๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๋ถ์๋ ``numer`` ๋ณ์์, ๋ถ๋ชจ๋ ``denom`` ๋ณ์์ ์ ์ฅ๋ฉ๋๋ค.
์ด ๋, ๋ฌธ์ ์์ ๋ ๋ถ์์ ํฉ์ ๊ธฐ์ฝ ๋ถ์(๋ถ๋ชจ์ ๋ถ์๊ฐ ๊ณตํต ์ฝ์๋ฅผ ๊ฐ์ง์ง ์๋ ๋ถ์)๋ก ๋ํ๋ด๋ผ ํ์์ผ๋ฏ๋ก, ์ต์ข ๋ถ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ๋ถ๋ชจ์ ๋ถ์์ ์ต๋๊ณต์ฝ์๋ก ๋๋ ์ค์ผ ํฉ๋๋ค.
์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด ์์ต๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋, ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ณ ๋ ๊ทธ๋ฆฌ์ค ์ํ์ ์ ํด๋ฆฌ๋๊ฐ ์ ์ํ ๋ฐฉ๋ฒ์ด๋ผ ๊ทธ์ ์ด๋ฆ์ ๋ฐ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋ผ ์นญํฉ๋๋ค.
๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ซ์ ``a``์ ``b``๊ฐ ์๊ณ ``a``๊ฐ ``b``๋ณด๋ค ํด ๋, ๋ ์๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํฉ๋๋ค. ์ด๋, ๋๋จธ์ง๊ฐ 0์ด๋ผ๋ฉด ๋ ์ค ๋ ์์ ``b``๊ฐ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋ฉ๋๋ค. ๋ง์ฝ 0์ด ์๋๋ผ๋ฉด, ``b``์ ์์ ๊ตฌํ ๋๋จธ์ง๋ฅผ ๊ฐ์ง๊ณ ๋๋จธ์ง ๊ฐ์ ๋ค์ ๊ตฌํด์ค๋๋ค. ์ด๋ ๊ฒ ๋์จ ๋๋จธ์ง ๊ฐ์ด 0์ด ๋์ฌ ๋๊น์ง ๋ฐ๋ณตํด ๊ตฌํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฝ๋๋ก ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
const gcd = (a, b) => b === 0 ? a : gcd(b, a % b)
์ฝ๋์์๋ `a`์ `b`๋ฅผ ์์ฑํ ๋ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋ฉ๋๋ค. ``a``์ ํฌ๊ธฐ๊ฐ ์ปค์ผ ์ ์์ ์ผ๋ก ๊ณ์ฐ๋๊ธด ํ์ง๋ง ์ฌ๊ทํจ์๋ก ์์ฑํด์ฃผ์์ผ๋ฏ๋ก ``a``์ ํฌ๊ธฐ๊ฐ ๋ ์์ผ๋ฉด ์๋์ ์ผ๋ก ``a``์ ``b``์ ์์น๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ง ์๊ณ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ ์๋ ์์ต๋๋ค.
const gcd = (num1, num2_ => {
let result = 1;
for (let i = Math.min(num1, num2); i >= 1; i--) {
if (num1 % i === 0 && num2 % i === 0) {
result = i;
break;
};
};
return result;
};
๋ ์ค ๋ ์์ ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ ๋ ๊ฐ ๊ฐ์ ๋๋ ์ค๋๋ค. ์ด ๋, ๋ ๊ฐ์ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด ๋๋ ``i``๊ฐ์ด ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋ฉ๋๋ค.
'๐ Jero's Wiki > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ง๋ฃ์์ ์ ํ๊ธฐ (0) | 2025.02.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ต๋น๊ฐ ๊ตฌํ๊ธฐ (0) | 2025.02.07 |
๐ง Problems
์ฒซ ๋ฒ์งธ ๋ถ์์ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ numer1
, denom1
, ๋ ๋ฒ์งธ ๋ถ์์ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ numer2
, denom2
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๊ธฐ์ฝ ๋ถ์๋ก ๋ํ๋์ ๋ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ์์๋๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
๐ก Solutions
const gcd = (num1, num2) => num2 === 0 ? num1 : gcd(num2, num1 % num2);
const solution = (numer1, denom1, numer2, denom2) => {
const numer = numer1 * denom2 + numer2 * denom1;
const denom = denom1 * denom2;
const frac_gcd = gcd(numer, denom);
return [numer / frac_gcd, denom / frac_gcd];
};
์ฝ๋ ์ค๋ช
์ฐ์ ํต๋ถ์ ํตํด ๋ ๋ถ์์ ๋ถ๋ชจ ๊ฐ์ ๊ฐ๊ฒ ๋ง๋ค์ด์ค ๋ค, ๋ถ์์ ํฉ์ ๊ตฌํด์ค๋๋ค. ๊ทธ๋ ๊ฒ ๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๋ถ์๋ numer
๋ณ์์, ๋ถ๋ชจ๋ denom
๋ณ์์ ์ ์ฅ๋ฉ๋๋ค.
์ด ๋, ๋ฌธ์ ์์ ๋ ๋ถ์์ ํฉ์ ๊ธฐ์ฝ ๋ถ์(๋ถ๋ชจ์ ๋ถ์๊ฐ ๊ณตํต ์ฝ์๋ฅผ ๊ฐ์ง์ง ์๋ ๋ถ์)๋ก ๋ํ๋ด๋ผ ํ์์ผ๋ฏ๋ก, ์ต์ข ๋ถ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ๋ถ๋ชจ์ ๋ถ์์ ์ต๋๊ณต์ฝ์๋ก ๋๋ ์ค์ผ ํฉ๋๋ค.
์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด ์์ต๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋, ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ณ ๋ ๊ทธ๋ฆฌ์ค ์ํ์ ์ ํด๋ฆฌ๋๊ฐ ์ ์ํ ๋ฐฉ๋ฒ์ด๋ผ ๊ทธ์ ์ด๋ฆ์ ๋ฐ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋ผ ์นญํฉ๋๋ค.
๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ซ์ a
์ b
๊ฐ ์๊ณ a
๊ฐ b
๋ณด๋ค ํด ๋, ๋ ์๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํฉ๋๋ค. ์ด๋, ๋๋จธ์ง๊ฐ 0์ด๋ผ๋ฉด ๋ ์ค ๋ ์์ b
๊ฐ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋ฉ๋๋ค. ๋ง์ฝ 0์ด ์๋๋ผ๋ฉด, b
์ ์์ ๊ตฌํ ๋๋จธ์ง๋ฅผ ๊ฐ์ง๊ณ ๋๋จธ์ง ๊ฐ์ ๋ค์ ๊ตฌํด์ค๋๋ค. ์ด๋ ๊ฒ ๋์จ ๋๋จธ์ง ๊ฐ์ด 0์ด ๋์ฌ ๋๊น์ง ๋ฐ๋ณตํด ๊ตฌํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฝ๋๋ก ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
const gcd = (a, b) => b === 0 ? a : gcd(b, a % b)
์ฝ๋์์๋ `a`์ `b`๋ฅผ ์์ฑํ ๋ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋ฉ๋๋ค. a
์ ํฌ๊ธฐ๊ฐ ์ปค์ผ ์ ์์ ์ผ๋ก ๊ณ์ฐ๋๊ธด ํ์ง๋ง ์ฌ๊ทํจ์๋ก ์์ฑํด์ฃผ์์ผ๋ฏ๋ก a
์ ํฌ๊ธฐ๊ฐ ๋ ์์ผ๋ฉด ์๋์ ์ผ๋ก a
์ b
์ ์์น๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ง ์๊ณ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ ์๋ ์์ต๋๋ค.
const gcd = (num1, num2_ => {
let result = 1;
for (let i = Math.min(num1, num2); i >= 1; i--) {
if (num1 % i === 0 && num2 % i === 0) {
result = i;
break;
};
};
return result;
};
๋ ์ค ๋ ์์ ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ ๋ ๊ฐ ๊ฐ์ ๋๋ ์ค๋๋ค. ์ด ๋, ๋ ๊ฐ์ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด ๋๋ i
๊ฐ์ด ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋ฉ๋๋ค.
'๐ Jero's Wiki > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ง๋ฃ์์ ์ ํ๊ธฐ (0) | 2025.02.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/JS] ์ต๋น๊ฐ ๊ตฌํ๊ธฐ (0) | 2025.02.07 |