각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
예각 : 0 < angle < 90 = 1
직각 : angle = 90 = 2
둔각 : 90 < angle < 180 = 3
평각 : angle = 180 = 4
function solution(angle) {
var answer = 0;
return answer;
}
아래와 같이 답변했는데 역시 틀리고 말았따...
function solution(angle) {
if(0 < angle < 90) {
return 1
}else if (angle === 90){
return 2
}else if (90 < angle < 180){
return 3
}else{
return 4
}
}
function solution(angle) {
if(angle < 90) return 1;
if(angle == 90) return 2;
if(angle < 180) return 3;
return 4;
}
0을 포함하면 안되는건가보다.
그리고 90 이상을 굳이 표시해주지 않아도 되는 것 같다.
function solution(angle) {
return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}
삼항 연사자 활용은 이해가 쉽게 되었다.
다음 부터는 짱구를 좀 더 열심히 굴리고 답을 적어야지...
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
filter는 그저 놀랍다..
머리가 이렇게 좋을 수가 있나?
코딩도 재능의 영역이다 역시 ㅋㅋㅋ
filter함수는 배열의 각 요소를 순회하며 callback함수를 실행하며 조건에 맞는 요소만을 갖는 배열을 반환합니다.
이게 뭔소린가 싶겠지만 예시를 보면 바로 이해 된다.
const numbers = [1, 2, 3, 4, 5];
// numbers 속 요소(currentNumber)를 하나씩 돌면서
// 2로 나눠줬을 때 나머지가 1인 경우 홀수가 된다.
const filter1 = numbers.filter(currentNumber => currentNumber % 2 === 1);
console.log(filter1);
그럼 console에 배열 속 홀수만 찍혀져 나오게 된다.
그래서 아무튼 위에 filter를 이용한 방법을 다시 해석 해 보자.
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
배열 속 숫자 하나 하나가 x 가 된다.
새로 들어온 angle이라는 숫자가 x 보다 같거나 크다면 새로운 배열에 저장한다.
그리고 그 새로운 배열의 length 값을 return 한다. (각 if 문에 따른 return 1 ~ 4 까지의 값을 확인해 보자.)
예를 들어 보겠다
// 만약 angle = 1 이라면
// 배열 속 0 만이 angle = 1 보다 작은 숫자니까
// length는 1이 된다.
// 그럼 문제에서 요구하는 예각 : 0 < angle < 90 = 1 에 부합한다.
[0, 90, 91, 180].filter(x => angle>=x).length = 1
설명하기도 이렇게 어려운데,
어떻게 저런 정답을 생각해 낼 수 있는건지?