Javascript-level : 코딩테스트 입문 - 점의 위치 구하기

HS K·2022년 12월 21일
0

문제설명

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • dot의 길이 = 2
  • dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다
  • -500 ≤ dot의 원소 ≤ 500
  • dot의 원소는 0이 아닙니다.

내가 쓴 답

const solution = ([x,y]) => {
    if (x>0 && y>0) return 1
    if (x<0 && y>0) return 2
    if (x<0 && y<0) return 3
    if (x>0 && y<0) return 4
    else return false
}

P.S 저번에 풀었던 평행문제에서 배웠던 구조할당을 그대로 써먹었다.

여러종류의 풀이 보기

1번

function solution(dot) {
    const [num,num2] = dot;
    const check = num * num2 > 0;
    return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
}
  • 이 풀이의 경우, 변수 (num,num2)를 쉽게 다루기 위해 구조분해할당을 이용하여 일일히 인덱스를 써줘야하는 번거로움을 없앴다. 변수로 표현하냐, 인덱스로 표현하냐의 차이일 뿐이다.

2번

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

후기

  • 저번에 풀었던 문제라서 풀이를 바로 떠올렸지만, 구조분해할당에 대한 개념없이 패턴만 외운채로 쓰려고하니 헷갈리는 감이 있어서 개념을 다시 찾아보았다.
  • 가끔 다 맞춰놓고 실수 때문에 계산결과가 틀리게 나오는 경우가 종종 있다. 정신 차리자.
  • 문제를 풀수록 삼항연산자 개념이 많이 나온다는 것을 확인할 수 있었다.
profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글