본문 바로가기

데이터 - 기본 코드 및 알고리즘 연습/Codewar

[Codewars] Sine, cosine and others

▶  문제 : 사인, 코사인, 탄젠트, 코탄젠트를 구하라

- 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