복소수가 인자로 주어진 함수값 반환

수경, Sugyeong·2021년 11월 2일
0

문제풀이

목록 보기
3/3
post-thumbnail

1. 문제

두 개의 input에 복소수(complex number)가 string 으로 주어진다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수이다.
input으로 받은 두 수를 곱해서 반환해야 한다. 반환하는 표현도 복소수 형태의 string 이어야 한다.
복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산한다.
(제곱 표현이 안 되어 i의 2제곱을 (i^2)라고 표현했다.)
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])
console.log(a1, a2)
  let secondArr = b.substring(0, b.length-1).split('+');
  const b1 = Number(secondArr[0])
  const b2 = Number(secondArr[1])
console.log(b1, b2)

  return `${a1 * b1 - a2 * b2}+${a1 * b2 + a2 * b1}i`
}

console.log(complexNumberMultiply("1+1i", "1+1i"))	// 예제

3. 코드 풀이

복소수라는 개념을 정말 오랜만에 접하는 것이라 구글에서 복소수의 개념과 풀이 예제를 찾아보았다. 기억 속에 흐릿하게 있었던 개념을 다시 짚어보게 되었다. 스스로 작성하진 못하더라도 다른 분이 작성하신 코드를 한 줄씩 이해해보았다.

  1. complexNumberMultiply 이라는 함수에 a와 b 라는 인자가 들어오며 그 인자는 각각 a+bi 라는 복소수 형태를 가지고 있다.

  2. firstArr라는 변수를 선언하고 그 변수에는 string 형태의 복소수 a의 i를 제외한 1+1을 구하는 substring 메서드와 그 값에서 + 를 제외한 배열값인 ['1','1'] 을 구한다.

  3. a1 은 우리가 구한 firstArr 변수의 0번째 인덱스 값이며 그것을 Number 메서드를 통하여 숫자로 변환시켜준다. a2 는 우리가 구한 firstArr 변수의 1번째 인덱스 값이며 역시 Number 메서드를 통하여 숫자로 변환시켜준다.

  4. 인자 b에 대한 것도 2번과 3번 과정처럼 반복해준다.

  5. 마지막 리턴 시에는 a1 * b1 값인 1에서 a2 * b2 값인 -i^2 빼주면 0이 되고 a1 * b2 값인 1a2 * b1 값인 1를 더하여 2 를 해준 상태에서 i를 붙여주면 2i라는 값이 나오는데 이를 복소수 형태로 바꾸면 0+2i 가 된다.

0개의 댓글