알고리즘 : 복소수 곱하기

dory·2021년 5월 10일
0

알고리즘

목록 보기
6/7

문제

두 개의 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 형태로 나와야 합니다.

풀이

  • a.slice(0, a.length-1) = '1+3'
    -> 문자열의 마지막 글자를 제외하고 가져온다.
  • .split('+')
    -> +를 기준으로 잘린 요소를 갖는 배열로 반환한다.
  • 두 번째 인자인 b도 마찬가지로 처리
  • (정수)+(복소수)i 모양에 맞춰서 리턴한다.
    -> 정수 부분은 A[0]*B[0]-(A[1]*B[1])의 합이다. 이때, A[1]*B[1]는 i^2 때문에 무조건 음수값이 되므로 -를 붙여준다.
    -> 복소수 부분은 A[0]*B[1]A[1]*B[0]의 합이다. 처음에 i를 제거했으므로, i를 추가해준다.

0개의 댓글