๐Ÿ’ป Code-Kata 6

Min-Ho Leeยท2020๋…„ 7์›” 20์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
6/7
post-thumbnail

Monday_July_20
.
.
.

๐Ÿ“œ ๋ฌธ์ œ

๋‘ ๊ฐœ์˜ input์—๋Š” ๋ณต์†Œ์ˆ˜(complex number)๊ฐ€ string ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
๋ณต์†Œ์ˆ˜๋ž€ a+bi ์˜ ํ˜•ํƒœ๋กœ, ์‹ค์ˆ˜์™€ ํ—ˆ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์ž…๋‹ˆ๋‹ค.

input์€ ํ•ญ์ƒ a+bi ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
output๋„ a+bi ํ˜•ํƒœ๋กœ ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

input์œผ๋กœ ๋ฐ›์€ ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ์„ธ์š”.
๋ฐ˜ํ™˜ํ•˜๋Š” ํ‘œํ˜„๋„ ๋ณต์†Œ์ˆ˜ ํ˜•ํƒœ์˜ string ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ 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.

1๏ธโƒฃ ๋ฐฉ๋ฒ•

def complexNumberMultiply(a, b):
 
  def split_num(com_num_str):
    if '+' in com_num_str:
      com_num_str_list = com_num_str.split('+')
      com_num_str_int = int(com_num_str_list[0])
      com_num_str_com_num = int(com_num_str_list[1][:-1])

    elif '-' in com_num_str:
      com_num_str_list = com_num_str.split('-')
      com_num_str_int = int(com_num_str_list[0])
      com_num_str_com_num = -(int(com_num_str_list[1][:-1]))
     
    return {
      'int':com_num_str_int,
      'com_num':com_num_str_com_num
      }

  a_int = split_num(a)['int']
  a_com_num = split_num(a)['com_num']
  b_int = split_num(b)['int']
  b_com_num = split_num(b)['com_num']
 
  first = a_int * b_int
  second = a_int * b_com_num
  third = a_com_num * b_int
  fourth = a_com_num * b_com_num
 
  int_result = f'{first+(-fourth)}+{second+third}i'
  str_result = str(int_result)
  return str_result

์ผ๋‹จ ๋ฌธ์ œ์—์„œ ๋งํ–ˆ๋“ฏ string์œผ๋กœ ๋ฐ›๊ณ  ๋งˆ์ง€๋ง‰์— string์œผ๋กœ ์ถœ๋ ฅ์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  input๊ณผ output์ด ๋ชจ๋‘ ๊ฐ™์€ ์ ์„ ์ด์šฉํ•˜์—ฌ
2๊ฐœ์˜ argument๋“ค์˜ input์„ split() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด '์‹ค์ˆ˜' ๋ถ€๋ถ„๊ณผ 'ํ—ˆ์ˆ˜' ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ค๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  '์‹ค์ˆ˜'์™€ 'ํ—ˆ์ˆ˜'๋ฅผ intํ˜•์„ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
๋ฌผ๋ก  ์—ฌ๊ธฐ์„œ 'ํ—ˆ์ˆ˜' ๋ถ€๋ถ„์€ ๋’ค์— i๋ฅผ index๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ„๋ ค์ค๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์ผ๋‹จ intํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๊ณ„์‚ฐํ›„, output์˜ ํ˜•ํƒœ๊ฐ€ input๊ณผ ๊ฐ™์ด
๋ณต์†Œ์ˆ˜์˜ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰์— ๊ณ„์‚ฐ์ด ๋‹ค ๋๋‚˜๊ณ  intํ˜•์˜ ํƒ€์ž…๋“ค์„ strํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  i๋ฅผ ์ถ”๊ฐ€ ํ›„
๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  input๊ฐ’์œผ๋กœ๋Š” ๋ฌด์กฐ๊ฑด +๋Š” ๋“ค์–ด์˜ค๋Š”๋ฐ ๋งŒ์•ฝ ํ—ˆ์ˆ˜๋ถ€๋ถ„์ด ์Œ์ˆ˜๊ฐ€ ๋“ค์–ด์˜จ๋‹ค๋ฉด '+-' ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ
๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ ์— ์œ ์˜ํ•ด์„œ ๋กœ์ง์„ ์งœ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ œ๊ฐ€ ์ง  ๋กœ์ง๋„ '๋ณต์†Œ์ˆ˜'๋ฅผ '์‹ค์ˆ˜'์™€ 'ํ—ˆ์ˆ˜'๋กœ ๋‚˜๋ˆ ์ฃผ๋Š” ํ•จ์ˆ˜์˜ ๋กœ์ง์ด ์ด์ƒํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ,
์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋งŒํผ์€ ์ „ํ˜€ ์ง€์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

profile
๐Ÿ‡ Rabbit can take a rest, but ๐Ÿข turtle can't

0๊ฐœ์˜ ๋Œ“๊ธ€