TIL _ Code Kata _ 복소수의 곱셈
❓문제
- 복소수 두 개를 곱해서 반환하는 로직 구현
- 인자로 주어지는 복소수는 'a+bi' 형태의 string이며, 반환되는 복소수도 'a+bi' 형태의 string
- 예를 들어,
'1+-1i'와 '1+-1i'를 각 인자로 받을 경우, 기대되는 반환값은 '0+-2i'function complexNumberMultiply (x, y) { };
1. 해결 방안
- 사고 과정
🔓 (문제 파악) 복소수 두 개를 곱해야 한다.
🔑 (해결 방안) 두 인자를 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;
}
2. 결과
"작성 내용 중 오류나 오타가 있다면, 댓글로 알려주시면 감사하겠습니다. 주니어 개발자에게 남겨주시는 작은 피드백이 큰 도움이 될 것 같습니다. 고맙습니다 :)"
Author And Source
이 문제에 관하여(TIL _ Code Kata _ 복소수의 곱셈), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@okcleff/TIL-Code-Kata-복소수의-곱셈저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)