[Python] Code Kata Day11

rang-dev·2020년 6월 22일
1

Wecode - Code Kata

목록 보기
11/18

문제

문제
두 개의 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 complexNumberMultiply(a, b):
  a1, a2 = a.split("+")
  a1 = int(a1)
  a2 = int(a2[:-1])
  b1, b2 = b.split("+")
  b1 = int(b1)
  b2 = int(b2[:-1])
  
  tu1 = (a1, a2)
  tu2 = (b1, b2)
  
  tu = (tu1, tu2)

  # print(tu)
  d = (tu[0][0] * tu[1][0]) - (tu[0][1] * tu[1][1])
  i = (tu[0][0]*tu[1][1]) + (tu[0][1]*tu[1][0])
  
  result = str(d)+"+"+str(i)+"i"
  
  return result
  
complexNumberMultiply("1+1i", "1+1i")

좀 더 간단하게 만들고 싶었는데 오늘 프로젝트 첫 시작날이라 다시 수정할 여유가 없었다.🏃‍♀️🏃‍♀️🏃‍♀️

Model Solution

def complexNumberMultiply(a, b):
  """
  :type a: str
  :type b: str
  :rtype: str
  """

  firstArr = a[:-1].split('+')
  a1 = int(firstArr[0])
  a2 = int(firstArr[1])

  secondArr = b[:-1].split('+')
  b1 = int(secondArr[0])
  b2 = int(secondArr[1])
  
  return f'{a1 * b1 - a2 * b2}+{a1 * b2 + a2 * b1}i'

# 더 줄인 버전
def complexNumberMultiply2(a, b):
  """
  :type a: str
  :type b: str
  :rtype: str
  """
  a1, a2 = map(int, a[:-1].split('+'))
  b1, b2 = map(int, b[:-1].split('+'))
  return '%d+%di' % (a1 * b1 - a2 * b2, a1 * b2 + a2 * b1)
profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

2개의 댓글

comment-user-thumbnail
2020년 6월 23일

잘보고있슴돠!

1개의 답글