Learning Log/알고리즘

[알고리즘] 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. (js)

자척개 2023. 1. 25. 17:43
반응형

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

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

 

 

 

A.

내 답

function solution(angle) {
    let result = 0;
    
    if(angle<90){
        return 1;
    } else if(angle === 90) {
        return 2;
    } else if(angle<180) {
        return 3;
    } else if(angle === 180) {
        return 4;
    }
    
    return result;
}

 

 

 

더 좋은 답

1)

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

 

2)

function solution(angle) {
    return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}​

 

 

 

문제 해결 과정

우선 가장 먼저 떠오른 건 if.. else문이었다

그 다음에 삼항연산자도 떠오르긴 했으나 보통 삼항연산자를 사용할 때 {조건 ? true ; false} 이렇게 사용했기 때문에 중첩되어 사용할 수 있는지는 몰랐다

그리고 실수한 부분이 있는데 angle의 조건을 줄 때 그냥 0<angle<90 이렇게 줘서 처음에는 함수가 제대로 작동하지 않았다

저렇게 조건을 주고자 한다면 angle>0 && angle<90 이렇게 조건을 주도록 하자

 

 

 

TIL

  • 삼항연산자 중첩 사용 가능
  • Array.prototype.filter()

ex.

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);                     // output: Array ["exuberant", "destruction", "present"]

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

반응형