내용 복습/알고리즘

프로그래머스 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를 활용한 해설을 생각해낼 수 있다는게 대단한 것 같다