내용 복습/알고리즘
프로그래머스 0단계 - 각도기
jskim4695
2024. 1. 4. 11:50
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
내가 푼 답:
function solution(angle) {
if (angle < 90){
return 1
} else if (angle == 90){
return 2
} else if (angle < 180){
return 3
} else {
return 4
}
}
더 나은 답: 삼항 연산자를 이용한 풀이
function solution(angle) {
return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}
그리고 쉬운 문제임에도 내가 기록으로 남긴 이유인데, 평소에 filter를 잘 사용하지 못하기에 익혀 둬야겠다고 생각했다.
가장 좋은 풀이: filter를 사용한 풀이
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
짧지만 많은 내용을 함축하고 있는데, filter는 array []에서 angle보다 작거나 같은 x를 추출한다.
만약 angle이 100이라고 가정하면 추출되는 x는 [0, 90, 91]일 것이다. 그리고 length로 그 배열의 길이를 반환한다.
여기서 문제가 예각/직각/둔각/평각일때 각각 1,2,3,4를 반환하게 하기에 가능한 해설이지만, filter를 활용한 해설을 생각해낼 수 있다는게 대단한 것 같다