❓문제
- 복소수 두 개를 곱해서 반환하는 로직 구현
- 인자로 주어지는 복소수는 'a+bi' 형태의 string이며, 반환되는 복소수도 'a+bi' 형태의 string
- 예를 들어,
'1+-1i'와 '1+-1i'를 각 인자로 받을 경우, 기대되는 반환값은 '0+-2i'function complexNumberMultiply (x, y) { };
🔓 (문제 파악) 복소수 두 개를 곱해야 한다.
🔑 (해결 방안) 두 인자를 a+bi
, c+di
로 가정했을 때,
곱셈 법칙으로 두 복소수를 곱한다.
(a+bi) * (c+di) = ac + adi + bci - bd
실수부와 허수부로 나누어 정리한다.
ac + adi + bci - bd = (ac - bd) + (ad + bc)i
🔓 (문제 파악) string으로 주어진 복소수를 number형태로 변환하여 계산 해야한다.
🔑 (해결 방안) 실수부와 허수부를 구분하는 '+'와 'i'를 기준으로 문자열을 구분(slice
메소드 활용)하여 숫자(Number
메소드)로 변환한다.
// (a+bi) * (c+di) = (ac-bd)+(ad+bc)i
const complexNumberMultiply = (x, y) => {
const a = Number(x.slice(0, x.indexOf('+')));
const b = Number(x.slice(x.indexOf('+') + 1, x.indexOf('i')));
const c = Number(y.slice(0, y.indexOf('+')));
const d = Number(y.slice(y.indexOf('+') + 1, y.indexOf('i')));
}
🔓 (문제 파악) 두 복소수를 곱하고, 다시 string 으로 변환하여 반환해야 한다.
🔑 (해결 방안) 복소수 곱셈법칙에 따라 계산한 후 템플릿 리터럴을 활용하여 반환한다.
// (a+bi) * (c+di) = (ac-bd)+(ad+bc)i
const complexNumberMultiply = (x, y) => {
const a = Number(x.slice(0, x.indexOf('+')));
const b = Number(x.slice(x.indexOf('+') + 1, x.indexOf('i')));
const c = Number(y.slice(0, y.indexOf('+')));
const d = Number(y.slice(y.indexOf('+') + 1, y.indexOf('i')));
const result = `${a*c - b*d}+${a*d + b*c}i`;
return result;
}