[codeKata_11] 복소수를 곱해 반환하기

devCecy·2020년 12월 15일
0

CodeKata

목록 보기
4/5

1. 문제

두 개의 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"
설명: 
(1 + i) * (1 + i) = 1 + i + i + i^2 = 2i 
2i를 복소수 형태로 바꾸면 0+2i.

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

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

가정
input은 항상 a+bi 형태입니다.
output도 a+bi 형태로 나와야 합니다.

2. 나의 코드

복소수를 이해하는게 첫번째 관문이였는데 함께 코드카타를 진행한 준희님 덕분에 잘 이해할 수 있었다. '+'를 기준으로 복소수를 쪼개주고, 쪼개진 아이들을 모두 선언해주어 곱해주는 방법으로 해결하였다.

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`
}

3. 정답 코드

알고리즘에 정확한 정답은 없겠지만 위코드에서 제시한 코드는 아래와같다.
우리가 푼 코드와 흐름이 거의동일하여 기분이 좋았다?????!

const complexNumberMultiply = (a, b) => {
  const numberingA =a.substring(0,a.length-1).split('+')
  const numberingB =b.substring(0,b.length-1).split('+')
  const numA1 =numberingA[0]
  const numA2 =numberingA[1]
  const numB1 = numberingB[0]
  const numB2 = numberingB[1]
  const numsum =(numA1*numB1)+(-(numA2*numB2))
  const isum = ((numA1*numB1)+(numA2*numB2)+'i')
  return `${numsum}+${isum}`
}
profile
🌈그림으로 기록하는 개발자🌈

0개의 댓글