CK week3 day1

BnDC·2021년 10월 5일
0

code Kata

목록 보기
10/22

🧨 문제

두 개의 input에는 복소수가 string으로 주어 진다. 복소수란 a+bia+bi 의 형태로, 실수와 허수로 이루어진 수다.

input으로 받은 두 수를 곱해 string 타입 으로 반환하라.






🎯 풀이


def complex_number_multiply(a, b):
# step1
  string_complex_nums = [a, b]
  complex_nums = [0, 0]
  re = []
  im = []
  result = ''


# step2
  for num in string_complex_nums:
    try:
      re.append(int(num.split('+')[0]))
      im.append(int(num.split('+')[1].rstrip('i')))
    except:
      print('입력 형식이 잘못 되었습니다')
      return '"실수부+허수부i" 형식으로 입력해 주세요'


# step3
  complex_nums[0] = re[0]*re[1]-im[0]*im[1]
  complex_nums[1] = re[0]*im[1]+re[1]*im[0]
    
  result = str(complex_nums[0]) +'+' + str(complex_nums[1])+'i'

  return result

input을 실수부와 허수부로 분리한후, int 데이터 타입으로 바꾸어 곱하기 연산을 한다. 그 연산 결과를 문자열로 바꾸어 반환한다.


inputint가 아닌 complex number로 바꾸고 연산해서 그 결과를 문자열로 바꾸어 반환해도 된다.

그러면 지금 풀이 보다, input 형식에 맞지 않는 입력에 대한 처리가 더 번거롭게 느껴졌다



📍 step 1


def complex_number_multiply(a, b):
# step1
  string_complex_nums = [a, b]
  complex_nums = [0, 0]
  re = []
  im = []
  result = ''

a,bfor문으로 순회하기 위한,
string_complex_nums

실수부를 re 담을, 허수부를 담을 im
결과를 담을 result 선언



📍 step 2


def complex_number_multiply(a, b):
# step 1
   #... ...#

# step 2
  for num in string_complex_nums:
    try:
      re.append(int(num.split('+')[0]))
      im.append(int(num.split('+')[1].rstrip('i')))
    except:
      print('입력 형식이 잘못 되었습니다')
      return '"(실수부) + (허수부)i" 형식으로 입력해 주세요 ex) 2+-2i'

string_complex_nums를 돌면서,
input 형식(x+yi x,y는 모든 실수)에 맞는, 입력이 들어 오면, 실수부를 re 리스트에, 허수부를 im 리스트에 int형으로 형변환 후 추가한다.

형식에 맞지 않으면, 안내문을 반환 한다.



📍 step 3

def complex_number_multiply(a, b):
# step1
  #... ...#


# step2
 #... ...#


# step3
  complex_nums[0] = re[0]*re[1]-im[0]*im[1]
  complex_nums[1] = re[0]*im[1]+re[1]*im[0]
    
  result = str(complex_nums[0]) +'+' + str(complex_nums[1])+'i'

  return result

복소수 연산에 맞게 연산한후
연산 결과를 문제 형식에 맞게 맞춘 문자열로 만들어
result에 대입하고, result를 반환한다.


🏹 복소수 연산
(x+yi)(z+wi)(x+yi)(z+wi) (i=1,i2=1)(i=\sqrt{-1}, i^2=-1)
=xz+xwi+yzi+ywi2=xz+xwi+yzi+ywi^2
=(xzyw)+(xw+yz)i=(xz-yw)+(xw+yz)i

profile
“Life is C (Choice) between B (Birth) and D (Death).” - 인생은 B와 D사이의 C

0개의 댓글