겨우겨우 풀었던 문제이다:
from cmath import phase
import re, sys
def split(s, p = re.compile(r'([+-]*\d+)')):
return [e for e in p.split(s) if e]
complex_num = sys.stdin.readline().strip()
complex_num_list = split(complex_num)
if len(complex_num_list) == 1:
print('%f\n%f' %(abs(complex(int(complex_num_list[0]), 0)), phase(complex(int(complex_num_list[0]), 0))))
elif len(complex_num_list) == 2:
print('%f\n%f' %(abs(complex(0, int(complex_num_list[0]))), phase(0, complex(int(complex_num_list[0])))))
elif len(complex_num_list) == 3:
print('%f\n%f' %(abs(complex(int(complex_num_list[0]), int(complex_num_list[1]))), phase(complex(int(complex_num_list[0]), int(complex_num_list[1])))))
split
이라는 함수까지 정의해서 사용해야 할 정도로 힘들었다. 여기에는 다음과 같은 부분들이 있다:
len(complex_num_list) == 1
는 입력 받은 복소수가 단순 숫자 일 경우, (ex - 12)len(complex_num_list) == 2
는 입력 받은 복소수가 단순 허수 일 경우, (ex - 23j)len(complex_num_list) == 3
는 입력 받은 복소수가 완전 복소수 일 경우, (ex - -1+2j)
이 세가지의 경우를 나누어서 구해야 했다.
'알고리즘 테스트 > Hackerrank 문제풀이 및 해설' 카테고리의 다른 글
<Hackerrank 문제풀이: 파이썬> DefaultDict Tutorial (0) | 2020.11.28 |
---|---|
<Hackerrank 문제풀이: 파이썬> Introduction to Sets (0) | 2020.11.27 |
<Hackerrank 문제풀이: 파이썬> itertools.permutations() (0) | 2020.11.26 |
<Hackerrank 문제풀이: 파이썬> collections.Counter() (0) | 2020.11.25 |
<Hackerrank 문제풀이: 파이썬> itertools.product() (0) | 2020.11.25 |