▶ 문제 : 사인, 코사인, 탄젠트, 코탄젠트를 구하라
- value로 사인값이 주어진다.
- list 안에 [ sin(사인), cos(코사인), tan(탄젠트), cot(코탄젠트) ] 값을 넣어 리턴하라.
- 조건1) 모든 숫자는 2 demical place까지 반올림하라 (round)
- 조건2) 탄젠트 or 코탄젠트 값을 계산할 수 없을 때는 리스트 안에 포함시키지 말 것.
test.describe('Basic tests')
test.assert_equals(sctc(1),[1, 0.0, 0.0])
test.assert_equals(sctc(1/2),[0.5, 0.87, 0.58, 1.73])
test.assert_equals(sctc(3 ** 0.5 / 2),[0.87, 0.5, 1.73, 0.58])
test.assert_equals(sctc(2 ** 0.5 / 2),[0.71, 0.71, 1.0, 1.0])
test.assert_equals(sctc(0),[0, 1.0, 0.0])
test.assert_equals(sctc(0.22),[0.22, 0.98, 0.23, 4.43])
test.assert_equals(sctc(0.15),[0.15, 0.99, 0.15, 6.59])
test.assert_equals(sctc(0.18),[0.18, 0.98, 0.18, 5.46])
test.assert_equals(sctc(0.2),[0.2, 0.98, 0.2, 4.9])
test.assert_equals(sctc(0.1),[0.1, 0.99, 0.1, 9.95])
▶ 내 답안 :
def sctc(sin):
cos = (1 - (sin)**2)**.5
try :
tan = sin/cos
cot = cos/sin
return [round(sin,2), round(cos,2), round(tan,2), round(cot,2)]
except :
return [round(sin,2), round(cos,2), 0.0]
▶ 모범답안 :
def sctc(sin):
cos = (1 - sin**2)**0.5
if 0 in (sin, cos):
res = [sin, cos, 0.0]
else:
res = [sin, cos, sin/cos, cos/sin]
return list(map(lambda x: round(x, 2), res))
▶ 배워야할 부분 : map ( lambda x : 함수( x ) , list )
'데이터 - 기본 코드 및 알고리즘 연습 > Codewar' 카테고리의 다른 글
[Codewars] Car Park Escape (0) | 2021.07.27 |
---|---|
[Codewars] validDate Regex (0) | 2021.07.26 |
[Codewars] Double Every Other (0) | 2021.06.30 |
[Codewars] Square Every Digit (0) | 2021.06.30 |
[Codewars] Connect Four (0) | 2021.06.28 |