TIL85. Codekata(10)
문제
두 개의 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 형태로 나와야 합니다.
내 풀이
def complex_number_multiply(a, b):
c,d = a.split('+')
e,f = b.split('+')
d = d[:-1]
f = f[:-1]
m1 = str((int(c) * int(e)) + (-(int(d)*int(f))))
m2 = str((int(c) * int(f)) + (int(d)*int(e))) + 'i'
return m1+'+'+m2
def complex_number_multiply(a, b):
c,d = a.split('+')
e,f = b.split('+')
d = d[:-1]
f = f[:-1]
m1 = str((int(c) * int(e)) + (-(int(d)*int(f))))
m2 = str((int(c) * int(f)) + (int(d)*int(e))) + 'i'
return m1+'+'+m2
정수부분과 i부분을 나눠서 계산했다!
처음에는 슬라이싱이 아닌 인덱싱으로 처리를 하여 -
기호가 붙었을 때 에러가 났지만
슬라이싱으로 수정을 하여 정답이 되었다!
Author And Source
이 문제에 관하여(TIL85. Codekata(10)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dnjs0718/TIL85.-Codekata10저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)