[JS] level0 점의 위치 구하기 - 삼항연산자, 구조분해할당

    https://school.programmers.co.kr/learn/courses/30/lessons/120841

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    문제

    - 점의 위치를 입력 받아 몇 사분면인지 출력한다.

    해결

    점의 위치 ( x,y)

    - 제 1사분면 : x>= 0 , y>=0

    - 제 2사분면 : x<= 0 , y>=0

    - 제 3사분면 : x<= 0 , y<=0

    - 제 4사분면 : x>= 0 , y<=0

     

    function solution(dot) {
        if(dot[0] >= 0) return dot[1] >=0 ?  1 : 4;
        return dot[1] >= 0 ? 2 : 3
    }
    if(dot[0] >= 0) return dot[1] >=0 ? 1 : 4;

    - dot[0]은 x 값을 나타낸다.

    - x 값이 0 이상이면

    - dot[1] >=0 ? 1 : 4; 을 반환한다.

    • 만약 y값인 dot[1]이 0보다 같거나 크다면 1를 반환하고 아니면 4를 반환한다.
    return dot[1] >= 0 ? 2 : 3

    - 만약 그 위에 조건이 다 아니라면 ( x값이 0보다 같거나 작다면)

    - y값인 dot[1]이 0보다 같거나 크다면 2를 반환하고 아니면 3을 반환한다.

     

    - 조건 중 0,0은 입력되지 않는다라고 명시되어 있으므로 신경쓰지 않는다.

     

    다른 사람 코드

    function solution(dot) {
        const [num,num2] = dot;
        const check = num * num2 > 0;
        return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
    }
    const [num,num2] = dot;

    - dot의 값을 [num,num2]로 나눔 => 구조 분해 할당

    const check = num * num2 > 0

    - 이 경우 check가  양수가 되는 경우는 제 1사분면과 제 3사분면이다.

     return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2); }

    - x값인 num이 0보다 클때 check 값이 true일때 1사분면 false일때 4사분면이다.

    - x값인 num이 0보다 작을때 check 값이 true일때 3사분면 false일때 2사분면이다.

     

    2022.12.10 - [분류 전체보기] - [CleanCode] 삼항연산자를 어떻게 다룰까?

     

    [CleanCode] 삼항연산자를 어떻게 다룰까?

    함수 매개변수로 if문,for문,swich문을 받을 수 있을까? 없다 . 그 이유는? 값이 들어가야지 식이 들어가면 안된다. 그럼 삼항연산자는 들어가도 되낭? 된다. 그 이유는? 조건문이 있으나 값으로 귀

    menduck.tistory.com

    댓글