본문 바로가기
Study (Data Science)/Python

프로그래머스) 각도기

by 콜라찡 2022. 11. 27.

내답안

처음에 print (1) 이렇게 넣었었는데, 결과값은 맞지만 오류가 났다. 웹에서 검색해보니 파이썬은 아니지만 return으로 푸신분이 계셔서 그렇게 해봤더니 맞다고 나왔다.

 

 

다른분 답안

 

if angle<=90:                        # 각이 90이하이면

return 1 if angle<90 else 2   # 1을 리턴, 각이 90 미만이면, 아니면 2를 리턴.

else :                                    # 각이 90 초과이면

return 3 if angle<180 else 4 # 3을 리턴, 둔각이면, 아니면 4를 리턴

 

이 코드가 제일 깔끔해보인다. 

사실 길이 4갈래로 나누어지는 문제였는데, 

먼저 2갈래로 나누어서 표현식을 쓰니 코드가 엄청 짧아졌다.

각이 90을 기준으로 나뉜다는 사실로 첫번째 갈림길을 결정하고,

그 안에서 부동호로 또다시 길을 나누면서,

사실 90도나 180도와 같을때의 리턴값을 위해 일반적으로 썼어야할 = 기호는 한번도 쓰지 않았다.

분기점을 잡아내는 발상이 대단한 것 같다.

 

필사하기

def solution(angle):

    if angle <=90:

        return 1 if angle <90 else 2

    else :

        return 3 if angle<180 else 4

 

 

또다른분은 정말 고수다

어차피 예각은 // 때리면 0이고, 90도는 1, 둔각도 1, 180도는 2가 나온다.

문제는 90도일때와 둔각일때가 똑같이 1이라는 사실인데,

이것을 나누고난 나머지, 즉 % 가 0보다 큰지의 여부로 그 값의 * 1을 했다.

90도는 당연 0이니 0*1이 되고, 둔각은 1*1, 180도는 2*1이 되어 가중치가 가산될 것이다.

멋짐.. 

728x90

댓글