[CodeKata]Day10

박민하·2022년 6월 20일
0

python 문제

목록 보기
26/49
post-thumbnail

Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.


# 문제

두 개의 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):
    # 여기에 코드를 작성해주세요.
    a = a.split("+")
    b = b.split('+')
    a_one = int(a[0])
    a_two = int(a[1][:-1])
    b_one = int(b[0])
    b_two = int(b[1][:-1])
    return f"{(a_one*b_one)+(a_two*b_two*-1)}+{((a_one*b_two)+(a_two*b_one))}i"

# 풀이 과정

  1. 복소수를 서로 곱하면 {숫자},{숫자}{i},{숫자}의 형태로 나온다.
  2. 마지막 값은 어차피 i^2=-1 이니까, -1을 곱한다.
  3. 숫자값이 나오는건 그냥 곱하고, i값이 포함된 부분은 연산 후 i를 붙인다

+ 그 외 코드

def complex_number_multiply(a, b):
    # 여기에 코드를 작성해주세요.
  a_mod = a.replace("i","j")
  b_mod = b.replace("i","j")
  
  if "+-" in a :
    a_mod = a.replace('+-', '-')
  a_mod = a_mod.replace("i","j")

  if "+-" in b:
    b_mod = b.replace("+-", "-")
  b_mod = b_mod.replace("i","j")
  
  a_mod = complex(a_mod)
  b_mod = complex(b_mod)
  res = a_mod * b_mod
  
  xxx = int(res.real)
  xxxx = int(res.imag)
  xxx = str(xxx)
  xxxx = str(xxxx)
  
  result = (xxx + "+" + xxxx + "i")
  return result
profile
backend developer 🐌

0개의 댓글