5/10 CODE KATA #12

9526 단어 code kataTILTIL

CODE KATA

Problem

문제
두 개의 input에 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.
input으로 받은 두 수를 곱해서 반환해주세요. 반환하는 표현도 복소수 형태의 string 이어야 합니다.
복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산해주세요.
(제곱 표현이 안 되어 i의 2제곱을 (i^2)라고 표현했습니다.)


예제 1:
Input: "1+1i", "1+1i"
Output: "0+2i"
Input: "1+1i", "1+1i"
Output: "0+2i"
설명:
(1 + i) (1 + i) = 1 + i + i + i^2 = 2i
(1 + i)
(1 + i) = 1 + i + i + i^2 = 2i
2i를 복소수 형태로 바꾸면 0+2i.


예제 2:
Input: "1+-1i", "1+-1i"
Output: "0+-2i"
Input: "1+-1i", "1+-1i"
Output: "0+-2i"
설명:
(1 - i) (1 - i) = 1 - i - i + i^2 = -2i,
(1 - i)
(1 - i) = 1 - i - i + i^2 = -2i,
-2i를 복소수 형태로 바꾸면 0+-2i.


예제 3:
Input: "1+3i", "1+-2i"
Output: "7+1i"
Input: "1+3i", "1+-2i"
Output: "7+1i"
설명:
(1 + 3i) (1 - 2i) = 1 - 2i + 3i -6(i^2) = 1 + i + 6,
(1 + 3i)
(1 - 2i) = 1 - 2i + 3i -6(i^2) = 1 + i + 6,
7+i를 복소수 형태로 바꾸면 7+1i.
가정
input은 항상 a+bi 형태입니다. output도 a+bi 형태로 나와야 합니다.



Code

const complexNumberMultiply = (a, b) => {
// a: string
// b: string
const aToArray = a.split("")  // a를 쪼개어 배열로 만듦
const bToArray = b.split("")  // b를 쪼개어 배열로 만듦
//
const aFirstNumber = parseInt(aToArray.slice(0,aToArray.indexOf("+")).join("")) //a의 앞에 있는 상수(정수)
const aSecondNumber = parseInt(aToArray.slice(aToArray.indexOf("+")+1,aToArray.indexOf("i")).join("")) // a가 가진 i의 계수 (정수)
//
const bFirstNumber = parseInt(bToArray.slice(0,bToArray.indexOf("+")).join("")) //b의 앞에 있는 상수(정수)
const bSecondNumber = parseInt(bToArray.slice(bToArray.indexOf("+")+1,bToArray.indexOf("i")).join("")) // b가 가진 i의 계수 (정수)
//
// 사칙연산 계산 
//(a+bi)(a-bi) a*a -a*bi + a*bi - b*b * (i^2)
const calculateI = (aFirstNumber*bSecondNumber) + (aSecondNumber * bFirstNumber) // i값끼리의 계산
const calculateNumber = (aFirstNumber*bFirstNumber) + ((aSecondNumber * bSecondNumber)*(-1)) // 상수끼리의 계산, i끼리의 곱은 -1 이므로 * (-1)을 해주었다.
//
const result = `${calculateNumber}+${calculateI}i`
return result
}
//
const first = "3+-5i" 
const second = "7+-8i"
//
complexNumberMultiply(first,second) // "-19+-59i"

좋은 웹페이지 즐겨찾기