3μ£Όμ°¨λ ννλ‘μ νΈ κΈ°κ°μ΄λ€!
νμ§λ§, μ½λμΉ΄νλ λ©μΆκΈ° μκ³ κ³μ νλ€π±
μ¬μ€, νλ‘μ νΈ κΈ°κ° μ μ²λΌ 1μκ°μ© νλ‘ μκ³ μμ§λ λͺ»νκ³ μλ€....
κ·Έλλ λ§€μΌ 2~30λΆμ©μ νΈλμ€!!!
const complexNumberMultiply = (a, b) => {
let aArr = a.split("+");
let bArr = b.split("+");
let aNum = aArr[0];
let aCom = aArr[1].split("i")[0];
let bNum = bArr[0];
let bCom = bArr[1].split("i")[0];
let aa = aNum * bCom;
let aaa = aNum * bNum;
let bb = bNum * aCom;
let bbb = -(bCom * aCom);
return `${aaa + bbb}+${aa + bb}i`
}
complexNumberMultiply('3+-1i', '99+99i'); // 396+198i
....? μ΄μΌ νμλ....?
μΌλ¨ 볡μμ(complex number)κ° λ¬Έμ λ‘ λμ¬μ€μ μ νμ ν λͺ°λλ€......π€£
κ±°κΈ°μ 1μ°¨ λΉν©.... (κ·Όλ° λλ§ λΉν©νκ² μλμλ보λ€.
λ΄κ° μλ 볡μμλΌλ κ°λ
μ μ κ³±νλ©΄ μμμμ λλλλ°, μ½λμΉ΄ν νμλ€μ΄ κ·Έμ λ μλ©΄ νν°μ΄λΌκ³ ν¨γ
γ
γ
γ
γ
γ
γ
γ
γ
γ
γ
)
μλ¬΄νΌ μΌλ¨ κ³μ°μλ§ μλ©΄ λ¬Έμ νΈλ건 μ΄λ ΅μ§ μλ€.
(λμ²λΌ μΌμΌμ΄ λ€ μͺΌκ°λ©΄ μ΄λ»κ² λ΅μ΄ λμ€κΈ΄ νλ€.....γ
γ
γ
γ
γ
γ
)
3+-1i
, 99+99i
λΌλ inputμμ +
-
i
κ°μ κΈ°νΈ λ€ λΌκ³ μ«μλ§ λκ³ λ³΄μ! μ΄λ νΈμμ μΌμͺ½ μ«μλΆν° a, b, c, d λΌκ³ λΆλ₯Έλ€.
a
: 3 , b
: 1 , c
: 99 , d
: 99
μ΄λ κ²!
μ¬κΈ°κΉμ§ μκ°νκ³ λλ©΄ μ λ§ κ°λ¨νλ€.
(a * c) + {-(b * d)}
κ° μμ μ€μ, (a * d) + (b * c)
κ° λ€μ νμ μ΄λ€.
b * d
μ -
λ₯Ό λΆμΈ μ΄μ λ b
μ d
λͺ¨λ νμμ΄κΈ° λλ¬Έμ i^2
μ΄ λμ μμκ° λκΈ° λλ¬Έ!
λ€μ λ¬Έμ λ‘ λμκ°μ, split
μΌλ‘ +
μ i
λ₯Ό κΈ°μ€μΌλ‘ λͺ¨λ μͺΌκ°μ μ«μλ§ λ¨κ²Όκ³ ,
μμμ λ§ ν λλ‘ κ³±ν μλ₯Ό κ°κ° aa
, aaa
, bb
, bbb
λΌλ λ³μμ λ΄μλ¨λ€.
(λ³μλͺ
μ€νλ...?)
μ²μμ 볡μμμ λΉν©ν΄μ κ·Έλ μ§, μ΄κ±΄ 볡μμκ° μλλ€... μ΄κ±΄ κ·Έλ₯ λνκΈ° κ³±νκΈ°λ€...νκ³ μ΅λ©΄μ κ±Έλ©΄
μ΄λ ΅μ§ μκ² ν μ μλ λ¬Έμ μΈ κ² κ°λ€! (μμμκ° 4~50λΆ! λμμ§ μλ€!!)
const complexNumberMultiply = (a, b) => {
let firstArr = a.substring(0, a.length-1).split('+');
const a1 = Number(firstArr[0])
const a2 = Number(firstArr[1])
let secondArr = b.substring(0, b.length-1).split('+');
const b1 = Number(secondArr[0])
const b2 = Number(secondArr[1])
return `${a1 * b1 - a2 * b2}+${a1 * b2 + a2 * b1}i`
}
λ΄ νμ΄λ κ±°μ λΉμ·νλ° λͺ¨λΈ μ루μ μ κ° μ«μλ§λ€ μͺΌκ° λ€μ λ°λ‘ κ³±νλ€!
νκΈ΄...μκ°ν΄λ³΄λ aa
aaa
bb
bbb
κ°μ λ³μλͺ
λ§λ€μ΄λ΄€μ μ΄ ν¨μ μμμ νλ² μ°κ³ λ§κ±΄λ° μ’ λλΉμλκ² κ°λ€γ
γ
γ
γ
const reverseString = s => {
return s.reverse();
};
reverseString(["h","e","l","l","o"]); // ["o","l","l","e","h"]
? νλ‘μ νΈμ μ§μ€νλΌλ λ©ν λλ€μ λ°°λ €...?
κ±°μ λ€ νμλλ°.....indexμ λ§μ§λ§μ λΆλ«νλ©΄ errorκ° λλ€π ν΄κ²°μ€!!!!
νΈλμ€....
const factorial = n => {
if (n <= 1) return 1;
let result = 1;
for (let i = 1; i < n; i++) {
result *= i + 1;
}
return result;
}
factorial(10); //3628800
μΌλ¨, μ¬κ·ν¨μ λ¬Έμ κΈ΄ νμ§λ§ μ΄ λ¬Έμ λ λ±ν μ¬κ·ν¨μλ₯Ό μ°μ§ μμλ ν μ μμλΉ....
μ¬κ·ν¨μμ λν건 νλ‘μ νΈκ° λλ μ£Όλ§μ μ’ λ μ 리ν΄λ³΄κΈ°λ‘ νκ³ !!!
ν©ν 리μΌμ ꡬνλ λ¬Έμ μΈλ°, ν©ν 리μΌ
μ΄λΌλ λ§μ λ£κ³ μ€νμ κ³ λ±νμ μνμκ°μΌλ‘ κ±°μ¬λ¬ μ¬λΌκ°λ©΄μ λ©λΆμ....ν νμλ μ ν μκ³ ,
λ¨μν 3! = 1 * 2 * 3
, 5! = 1 * 2 * 3 * 4 * 5
μ΄λΉ.
μΌλ¨ 1λΆν° μμν΄μΌ νλκΉ result
λΌλ λ³μμ 1μ΄λΌλ κ°μ ν λΉνκ³ , for
λ¬Έμ λλ¦°λ€.
μΈμλ‘ μ£Όμ΄μ§λ nμ κ° μμλ€μ λλ©΄μ, κ±°κΈ°μ 1μ© λν κ°μ result
μ λνλ€.
λ§μ½ nμ΄ 1λ³΄λ€ μκ±°λ κ°λ€λ©΄, 1
μ return νλ€.
const factorial = n => {
if (n === 0) return 1;
return n * factorial(n-1);
}
μ¬κ· ν¨μλ, ν¨μλ₯Ό μ μνλ©΄μ κ·Έ μμμ λμμ ν¨μλ₯Ό νΈμΆνλ ν¨μλ₯Ό λ§νλλ°,
μ΄μ λν΄ ν¬κ² μμλΏλ€ 보λ, for
λ¬Έμ μ΄μ©ν΄μ νμλκ² κ°λ€.
μ°μ , n === 0
μΌλ, μ¬κ·λ₯Ό λ©μΆκ³ 1
μ λ°ννλ 쑰건μ λ¨Όμ κ±Έμ΄μ€λ€.
κ·Έλ¦¬κ³ nμ factorial(n-1)
μ κ³±ν΄μ€λ€. μ΄ λ, μ μκ° λλμ§λ μμ factorial
κ° μ¬μ©λμλ€.
κ·ΈλΌ factorial(n-1)
μ κ°μ μ΄λ»κ² μ μ μμκΉ?
λ€μ ν¨μμ μ²μμΌλ‘ λμκ°μ, μ΄λ²μ factorial(n-1)
μΌλ‘ μ°μ°μ νλ€.
λ§μ§λ§μ return n * factorial(n-1);
μ λ§λλ©΄, μ²μμ n
μ κΈ°μ€μΌλ‘ μκ°νμ λ μ¬μ€μ return (n-1) * factorial(n-2);
κ° λ κ²μ΄λ€.
factorial(n-2)
μ κ°μ ꡬνκΈ° μν΄ λ€μ μ²μμΌλ‘ λμκ°λ€.
μΈμ μ’ λ£ν κ²μΈκ°μ λν μ‘°κ±΄μ΄ μλ€λ©΄, 무νμΌλ‘ λ°λ³΅νκ² μ§λ§ μ°λ¦¬λ nμ΄ 0μΌ κ²½μ°μ 1μ λ°ννλ€λ 쑰건μ κ±ΈμκΈ° λλ¬Έμ μμμ λ΄λ €κ°λ€κ°.... nμ΄ 0μ΄ λλ μκ°! λλμ΄ μ΄ ν¨μκ° μ’ λ£λκ³ κ·Έλμμ κ²°κ³Όκ°μ΄ λ°νλλ€.
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
λ§μ΄λ€!
(μ¬κΈ°μ 1μ, λ§μ§λ§μ return n * factorial(n-1);
μ μ¬μ€, return 1 * factorial(0);
μΌλ‘ κ°μ΄ 0μ΄κΈ° λλ¬Έμ n === 0
μ΄λΌλ λ§μ§λ§ 쑰건μμ 1
μ return ν¨μΌλ‘μ¨ κ°μ λ§μΆ°μ€κ²!
3μ£Όμ°¨ νκΈ° : λ¨Έλ¦¬κ° μ μ λ§λλ§λν΄μ§λ λλμ΄κΈ΄ νλ°, ννμ΄λ λ³νμ μμ§ν 무리λ°μ°...ππππ