const complexNumberMultiply = (a, b) => {
const as = a.split("+");
const bs = b.split("+");
const a_one = Number(as[0]);
const b_one = Number(bs[0]);
const a_two = Number(as[1].slice(0,-1));
const b_two = Number(bs[1].slice(0,-1));
const first = a_one * b_one - a_two * b_two;
const second = a_one * b_two + a_two * b_one;
return first + "+" + second + "i";
}
복소수를 계산하는 방법은
(a+bi) * (c+di) 에서 i가 있는것끼리와 없는것끼리 계산하기 때문에
ac + bd(i^2)과 a*di+ bi*c 이 된다. 그리고 i^2 = -1이므로 앞부분은 사실상 a*c - b*d로 계산한다.
우선은 input 값에서 "+"를 기준으로 나눠준다.
또한, 원래는 수학에서 i를 유지한채 계산하지만 컴퓨터에서는 그게 안되기 때문에
i를 떼고 값을 변수에 담아 처리한다.
마지막에 first와 second는 각각 (ac - bd)와 (ad + bc)가 된다.
이제 second에 다시 i를 붙이고 이를 하나로 합쳐서 복소수 형태로 return해주면 우리가 원하는 값을 받을수 있다.
map을 배운뒤
const arr = [a.slice(0,-1), b.slice(0,-1)];
const [as,bs]= arr.map( x => x.split("+"));
const result1 = Number(as[0]*bs[0] - as[1]*bs[1]);
const result2 = Number(as[0]*bs[1] + as[1]*bs[0]);
return result1 + "+" + result2 + "i";
로 해보니 훨씬 간결한 코드가 되었다.