[문제풀기] 프로그래머스 점의 위치 구하기

yeols·2023년 9월 23일
0

Algorithm

목록 보기
11/16
post-thumbnail

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

문제 설명

사분면은 한 평면을 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 함수를 완성해주세요.

입출력 예

dotresult
[2, 4]1
[-7, 9]2

입출력 예 설명

입출력 예 #1

  • dot이 [2, 4]로 x 좌표와 y 좌표 모두 양수이므로 제1사분면에 속합니다. 따라서 1을 return 합니다.

입출력 예 #2

  • `dot'이 [-7, 9]로 x좌표가 음수, y좌표가 양수이므로 제2사분면에 속합니다. 따라서 2를 return 합니다.

나의 문제 풀이

function solution(dot) {

  if (dot[0] > 0 && dot[1] > 0) {
    return 1
  } else if (dot[0] < 0 && dot[1] < 0) {
    return 3;
  } else {
      return dot[0] < 0 ? 2 : 4;
  }
}

문제 풀이 해설

인수로 받은 배열 dot를 첫 if에서 dot[0]dot[1]이 둘 다 0 보다 크면 둘 다 양수이므로 제1사분면에 속함으로 1을 return 한다.
그게 아니고 dot[0] 이 0보다 작고 dot[1]이 0보다 작으면 둘 다 음수이므로 제3사분면에 속하므로 3을 return 한다.
위 if, else if에서 양쪽 다 양수 음수를 걸러 냈기 때문에 else에서는 배열 dot중에 하나만 음수인지 확인하는 삼항 연산자로 2와 4를 return 한다.
return dot[0] < 0 ? 2 : 4


다른 사람의 문제 풀이

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

다른 사람의 문제 풀이 해설

전달 받은 배열 dot을 구조분해를 한다.
dot[0]dot[1]을 곱한 값이 0보다 크면 true, 0보다 작으면 false
배열에 담긴 dot[0]의 값이 양수이고 check가 true(num num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 1을 return한다.
배열에 담긴 dot[0]의 값이 양수이고 check가 false(num
num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 4을 return한다.
배열에 담긴 dot[0]의 값이 음수이고 check가 true(num num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 3을 return한다.
배열에 담긴 dot[0]의 값이 음수이고 check가 false(num
num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 2을 return한다.


프로그래머스 배열 뒤집기

문제 설명

사분면은 한 평면을 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 함수를 완성해주세요.

입출력 예

dotresult
[2, 4]1
[-7, 9]2

입출력 예 설명

입출력 예 #1

  • dot이 [2, 4]로 x 좌표와 y 좌표 모두 양수이므로 제1사분면에 속합니다. 따라서 1을 return 합니다.

입출력 예 #2

  • `dot'이 [-7, 9]로 x좌표가 음수, y좌표가 양수이므로 제2사분면에 속합니다. 따라서 2를 return 합니다.

나의 문제 풀이

function solution(dot) {

  if (dot[0] > 0 && dot[1] > 0) {
    return 1
  } else if (dot[0] < 0 && dot[1] < 0) {
    return 3;
  } else {
      return dot[0] < 0 ? 2 : 4;
  }
}

문제 풀이 해설

인수로 받은 배열 dot를 첫 if에서 dot[0]dot[1]이 둘 다 0 보다 크면 둘 다 양수이므로 제1사분면에 속함으로 1을 return 한다.
그게 아니고 dot[0] 이 0보다 작고 dot[1]이 0보다 작으면 둘 다 음수이므로 제3사분면에 속하므로 3을 return 한다.
위 if, else if에서 양쪽 다 양수 음수를 걸러 냈기 때문에 else에서는 배열 dot중에 하나만 음수인지 확인하는 삼항 연산자로 2와 4를 return 한다.
return dot[0] < 0 ? 2 : 4


다른 사람의 문제 풀이

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

다른 사람의 문제 풀이 해설

전달 받은 배열 dot을 구조분해를 한다.
dot[0]dot[1]을 곱한 값이 0보다 크면 true, 0보다 작으면 false
배열에 담긴 dot[0]의 값이 양수이고 check가 true(num num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 1을 return한다.
배열에 담긴 dot[0]의 값이 양수이고 check가 false(num
num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 4을 return한다.
배열에 담긴 dot[0]의 값이 음수이고 check가 true(num num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 3을 return한다.
배열에 담긴 dot[0]의 값이 음수이고 check가 false(num
num2 > 0)이면 배열에 담긴 두 숫자 모두 양수이므로 2을 return한다.


후기

정말 머리가 좋은 분들이 많은거같다..
어떻게 배열의 첫번째를 기준으로 양수, 음수를 판별하고 배열의 두개의 수를 곱해서 0이 양수인지, 음수인지를
판별할 생각을 어떻게 한건지 감탄만 나올뿐이다..
정말 대단하다..

profile
흠..

0개의 댓글