본문 바로가기
프론트엔드로 가는 길/프로그래머스

05. 각도기

by woody-j 2022. 10. 30.

※문제설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

예각 : 0 < angle < 90
직각 : angle = 90
둔각 : 90 < angle < 180
평각 : angle = 180

 

My Solution

const solution =(angle)=> 
(0 < angle && angle < 90) ? 1
: (angle == 90) ? 2 
: (90 < angle && angle < 180) ? 3 
: 4

 

 

더보기
논리 연산자와 다중 삼항 연산자를 사용하여 값 출력

 

 

부족한 점 처음에는 if문으로 사용하여 '0 < angle < 90' 이라고 작성했다. 역시나 오류가 났다. 문득 && , || 기호가 생각이 났고 검색해서 논리 연산자라는 것을 알게 되었다. 논리 연산자를 이용해서 작성했더니 성공적으로 실행이 됐다. 
if문에 익숙했던 나는 조금 더 생각해서 삼항연산자를 사용해보고자 했다. 하지만 전에 사용했던 삼항 연산자와 달리 조건문이 여러개였다. 그래서 다중 삼항연산자를 사용하여 코드를 작성했다. 코드 문법 지식 부족
개선 방안 지식면에서 부족한 부분은 많겠지만 조금씩 알아가는 과정에서 확실하게 기억하고 넘어가자!

 

다중 삼항 연산자 구조

(조건문1) ? (조건문 1이 참일때) : (거짓일때 수행할 조건문2) ? (조건문 2 참일때) : (모두 거짓일 때)

 

논리 연산자 

and 논리식이 모두 참이면 참을 반환함. (AND 연산)
or 논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산)
xor 논리식이 서로 다르면 참을 반환함. (XOR 연산)
&& 논리식이 모두 참이면 참을 반환함. (AND 연산)
|| 논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산)
! 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (NOT 연산)

 

논리 연산자의 모든 동작의 결과를 보여주는 진리표

 

 

A B A and B (A && B) A or B (A || B)  A xor B !A
true true true true false false
true false false true true false
false true false true true true
false false false false false true

 

Different Approach

function solution(angle) {
    return [0, 90, 91, 180].filter(x => angle>=x).length;
}

 

느낀 점 다른 신박한 풀이 법을 봤는데 저 부분에 대해 해석해보려고 노력했는데 오래 찾아봤지만 이해 할 수 없었다.. 
'(x => angle >= x)' 특히 이부분. filter 에 대해서 검색했는데 검색 방법이 잘못된 것인가 나는 비슷한 예시가 나오지않으면 아직 이해하기가 어려운 것 같다

 

 

 

참고 블로그 : 

'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글

07. 배열의 평균값  (0) 2022.11.03
06. 짝수의 합  (0) 2022.11.02
04. 숫자 비교하기 & 나이 출력  (0) 2022.10.29
03. 두 수의 차 & 곱  (0) 2022.10.28
02. 몫 구하기  (1) 2022.10.27