저장을 습관화

프로그래머스 LV.0 점의 위치 구하기 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 점의 위치 구하기

ctrs 2023. 9. 9. 18:04

프로그래머스 LV.0 점의 위치 구하기

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 명

점의 위치 구하기


2. 문제 설명

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

- x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.

- x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.

- x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.

- x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.

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


3. 제한 사항

- dot의 길이 = 2
-

- dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다

- -500 ≤ dot의 원소 ≤ 500

- dot의 원소는 0이 아닙니다.


4. 예시

dot result
[2, 4] 1
[-7, 9] 2


5. 기본 제공 코드

function solution(dot) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

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

 

6-2. VSC에 작성한 내용

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

// 테스트
console.log(solution([2, 4]));
console.log(solution([-7, 9]));


7. 특이사항

if else if를 사용하여 모든 조건을 입력했었는데 

너무 길어졌는지 채점 단계에서 런타임 에러가 발생하더라

else if 문을 제거하니 통과하긴 했는데..

 

if 문을 겹쳐놓아서 프로그램이 돌아가는데 오래걸린건가 싶어

줄여보고 줄여보다 보니 4줄까지 줄일 수 있었다


8. 다른 사람이 작성한 답

8-1. 삼항연산자 안에 삼항연산자

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

 

8-2.

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

 

8-3.

function solution(dot) {
    var answer = 0;
    const x = dot[0];
    const y = dot[1];

    if (x > 0 && y > 0) answer = 1
    if (x < 0 && y > 0) answer = 2
    if (x < 0 && y < 0) answer = 3
    if (x > 0 && y < 0) answer = 4

    return answer;
}