두 개의 input에는 복소수(complex number)가 string 으로 주어집니다.
복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.
input으로 받은 두 수를 곱해서 반환해주세요.
반환하는 표현도 복소수 형태의 string 이어야 합니다.
복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산해주세요.
Input: "1+1i", "1+1i"
Output: "0+2i"
설명:
(1 + i) * (1 + i) = 1 + i + i + i^2 = 2i
2i를 복소수 형태로 바꾸면 0+2i.
Input: "1+-1i", "1+-1i"
Output: "0+-2i"
설명:
(1 - i) * (1 - i) = 1 - i - i + i^2 = -2i,
-2i를 복소수 형태로 바꾸면 0+-2i.
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+bi의 형태니깐 계산식으로 풀면 a + ai + bi + (ab * -1)의 구조로 항상 나오기 때문에, 계산식으로 만든 다음 하나하나의 항을 리스트에 담아 리스트의 첫번째 요소와 리스트의 마지막 요소를 계산하고 리스트의 두번재 요소와 리스트의 세번째 요소를 계산해서 붙이면 될듯 하다.
def fn_split(str):
for i in range(len(str)):
if str[i] in ['+', '-']:
return [str[0:i], str[i:len(str)]]
def complex_number_multiply(a, b):
# 여기에 코드를 작성해주세요.
num_list1 = fn_split(a.replace('+-', '-'))
num_list2 = fn_split(b.replace('+-', '-'))
ret_list = []
ret = ''
for i in range(0, 2):
for j in range(0, 2):
num1 = int(num_list1[i].replace('i', ''))
num2 = int(num_list2[j].replace('i', ''))
calc_num = 0
if num_list1[i][-1] == 'i' and num_list2[j][-1] == 'i':
calc_num = (num1 * num2) * -1
else:
calc_num = num1 * num2
ret_list.append(calc_num)
ret += str(ret_list[0] + ret_list[3])
ret += '+'
ret += str(ret_list[1] + ret_list[2]) + 'i'
return ret