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