두 개의 input에는 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다. input으로 받은 두 수를 곱해서 반환해주세요. 반환하는 표현도 복소수 형태의 string 이어야 합니다. 복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산해주세요.
✔️ parameter로 "1+1i"
, "1+1i"
이 전달되면, "0+2i"
를 반환합니다.
✔️ parameter로 "1+-1i"
, "1+-1i"
이 전달되면, "0+-2i"
를 반환합니다.
✔️ parameter로 "1+3i"
, "1+-2i"
이 전달되면, "7+1i"
를 반환합니다.
def complex_number_multiply(a, b): a1, a2 = map(int, a[:-1].split('+')) b1, b2 = map(int, b[:-1].split('+')) return f"{a1 * b1 - a2 * b2}+{a1 * b2 + a2 * b1}i" print(complex_number_multiply("1+3i", "1+-2i")) # 7+1i
✔️ a와 b로 전달된 string을 맨 뒤에 i를 제거한 상태로 +를 기준으로 split합니다.
✔️ 예를 들어, a가 "1+3i"고, b가 "1+-2i"라면, 이를 i를 제거한 채로 split한면 ['1', '3']
, ['1', '-2']
가 됩니다.
✔️ 현재 리스트 안에 string형태기 때문에 map을 통해 int형으로 캐스팅합니다.
✔️ 이렇게되면, a1=1, a2=3, b1=1, b2=-2
이 됩니다.
✔️ 복소수 공식입니다. a1과 a1의 곱을 a2와 b2의 곱으로 뺀 값과, a1과 b2의 곱과 a2와 b1의 곱을 더한 값을 넣어주면 됩니다.
f"{a1 * b1 - a2 * b2}+{a1 * b2 + a2 * b1}i"
def complex_number_multiply(a, b): num_list = list(map(int, ("".join(a.split("i"))).split("+") + ("".join(b.split("i"))).split("+"))) print(num_list) # [1, 3, 1, -2] first = (num_list[0]*num_list[2]) - (num_list[1]*num_list[3]) last = (num_list[0]*num_list[3]) + (num_list[1]*num_list[2]) return f"{first}+{last}i" print(complex_number_multiply("1+3i", "1+-2i")) # 7+1i