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