[CODEKATA]3-1 . complex_number_multiply_TIL

은경·2021년 11월 1일
0

문제🔍

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


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

일단 복소수의 개념부터 잘 몰라서 엄청 당황했었다!!!


풀이💡

def complex_number_multiply(a, b):
  first = a[:-1].split('+') 
  #a인자의 [i]전까지의 숫자를->[:-1]  .split매서드를 이용해 +기준으로 잘라준다 
  a1 = int(first[0]) #인덱스를 이용해 잘랐던 a인자의 앞뒤를 변수로 선언
  a2 = int(first[1]) 

  second = b[:-1].split('+')
  b1 = int(second[0])
  b2 = int(second[1])

  return f'{a1 * b1 - a2 * b2}+{a1 * b2 + a2 * b1}i'
  #리턴값은 복소수 형태의 스트링이어야 한다고 했기때문에 
  #f-string으로 포매팅 해서 중괄호를 이용해 실수끼리만,i끼리만 묶어서 계산해준다 
  #그리고 마지막에 [:-1]때문에 빠졌던 i를 작성해서 리턴
profile
Python 서버 개발자

0개의 댓글