Q. 두 개의 input에는 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다.
input으로 받은 두 수를 곱해서 반환해주세요.
+
를 기준으로 실수, 허수부분 분리def complex_number_multiply(a,b):
a,b = a.split('+'),b.split('+')
a1,b1 = a[0],b[0]
a2,b2 = a[1][:-1],b[1][:-1]
x = eval(a1+'*'+b1+'-'+a2+'*'+b2)
y = eval(a1+'*'+b2+'+'+a2+'*'+b1)
return f'{x}+{y}i'
Review
- 인덱스 슬라이싱 한 반환값이
str
타입인 것에서 착안,eval
함수를 사용해보았다. 모든 숫자를int
타입으로 바꾸는 코드와 길이가 많이 차이나지 않는다.
def complex_number_multiply2(a, b):
a1,a2 = map(int, a[:-1].split('+'))
b1,b2 = map(int, b[:-1].split('+'))
return f'{a1*b1-a2*b2}+{a1*b2+a2*b1}i'
수정
- 인덱스 슬라이싱 후
split
메소드 사용
출력형태 : 1+2i --> [ 1, 2 ]a = 1+2i x,y = a[:-1].split('+') #x = 1, y = 2
map
함수를 이용해 iterable의 각 요소에int
함수 적용
Q. 문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.
def reverse_string(s):
s.reverse()
return s
Review
reverse
메소드는 주어진 리스트의 배열을 역순으로 다시 배열한다.- 이와 비교해서, 인덱스 슬라이싱은 주어진 리스트를 역순으로 배열한 새로운 리스트를 만들어 반환한다.