반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코딩테스트] 점의 위치 구하기 본문

JS코딩테스트

[JS코딩테스트] 점의 위치 구하기

DaeunCoding 2023. 3. 10. 07:29
728x90
반응형

[나의 풀이]

function solution(dot) {
    let answer;
    if(dot[0] > 0 && dot[1] > 0){
        answer = 1;
    } else if(dot[0] < 0 && dot[1] > 0){
        answer = 2;
    } else if(dot[0] < 0 && dot[1] < 0){
        answer = 3;
    } else if(dot[0] > 0 && dot[1] < 0){
        answer = 4;
    }
    return answer;
}

코드가 반복적이고 길어져서 효율적인 풀이 방식은 아닌 것 같다.

 

다른 풀이 방식을 살펴보자.

 

[다른 풀이]

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

비구조화 할당(Destructuring assignment)을 사용했다.

 

제 1사분면, 제 4사분면은 x>0이므로 삼항연산자(Conditional(ternary) operator)로 

1,4 : 3,2를 구분해준다.

 

그리고 1, 4와 3, 2의 차이는 y가 0보다 큰지 작은지를 따져서 구분해준다.

 

근데 check = num2 > 0;로도 충분히 구분할 수 있을텐데, num * num2 > 0;로 굳이 코드를 짠 이유는 잘 모르겠다.

 

[또다른 풀이]

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

이것도 삼항연산자를 사용했다.

 

제일 간결한 풀이인 것 같다.

728x90
반응형