사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot
이 매개변수로 주어집니다. 좌표 dot
이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
dot
의 길이 = 2dot[0]
은 x좌표를, dot[1]
은 y좌표를 나타냅니다dot
의 원소 ≤ 500dot
의 원소는 0이 아닙니다.dot | result |
---|---|
[2, 4] | 1 |
[-7, 9] | 2 |
입출력 예 #1
dot
이 [2, 4]로 x 좌표와 y 좌표 모두 양수이므로 제 1 사분면에 속합니다. 따라서 1을 return 합니다.입출력 예 #2
dot
이 [-7, 9]로 x 좌표가 음수, y 좌표가 양수이므로 제 2 사분면에 속합니다. 따라서 2를 return 합니다.const solution = (dot) => {
let arr = dot.map(x=> x>0?1:0);
return arr[0] === 1 && arr[1] === 1 ? 1 : arr[0] === 0 && arr[1] === 1 ? 2 : arr[0] === 0 && arr[1] === 0 ? 3 : 4;
}
/*
내가 처음 작성한 코드이다.
1. let arr = dot.map(x => x > 0 ? 1 : 0)
이 부분은 입력받은 좌표 배열 dot의 각 원소(즉, x와 y 좌표)에 대해 양수인지 음수인지를 판별한다.
만약 양수라면 1을, 음수라면 0을 반환힌다.
이렇게 생성된 새 배열 arr는 각각 x와 y의 부호 정보를 담고 있다.
2. 그 다음 줄의 코드는 arr 배열의 요소들을 확인하여 해당 좌표가 어느 사분면에 속하는지 판별한다
만약 x와 y 모두 양수라면(arr[0] === 1 && arr[1] === 1) 제 1사분면이므로, 1을 반환한다.
만약 x가 음수이고 y가 양수라면(arr[0] === 0 && arr[1] === 1) 제2사분면이므로, 2를 반환한다.
만약 x와 y 모두 음수라면(arr[0] === 0 && arr[1] === 0) 제3사분면이므로, 3을 반환한다.
위 세 경우 모두 아니라면(즉, x가 양수이고 y가 음수인 경우) 제4사분면이므로,
마지막으로 남은 숫자인 '4'를 반환하게 된다.
*/
const solution = (dot) => {
const [x, y] = dot;
if (x > 0 && y > 0) {
return 1;
} else if (x < 0 && y > 0) {
return 2;
} else if (x < 0 && y < 0) {
return 3;
} else { // x > 0 && y < 0
return 4;
}
}
/*
if-else 문을 사용하면 좀 더 직관적으로 이해할 수 있다.
dot 배열에서 x와 y 좌표를 바로 추출하여(const [x, y] = dot;) 각각의 사분면 조건에 대해
명시적으로 검사한다. 이렇게 하면 map 함수를 호출하거나 별도의 배열을 생성할 필요가 없으므로
코드가 더욱 간결해진다.
*/
const solution = (dot) => {
const [x, y] = dot;
return x > 0 ? (y > 0 ? 1 : 4) : (y > 0 ? 2 : 3);
}
/* 위의 코드를 삼항연산자를 이용하여 작성하였다.*/
function solution(dot) {
const [num,num2] = dot;
const check = num * num2 > 0;
return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
}
/*
다른 분의 코드를 보다가 구조분해를 이용해서 작성하는 방법도 공부하고 싶어서 가져와봤다.
1. const [num,num2] = dot;
이 부분은 입력받은 좌표 배열 dot의 각 원소를 num(x좌표)와 num2(y좌표)로 추출한다.
2. const check = num * num2 > 0;
이 부분은 x와 y의 곱이 양수인지 확인한다.
만약 두 수의 곱이 양수라면, 두 수는 같은 부호를 가진다.(즉, 둘 다 양수이거나 둘 다 음수이다.)
3. num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
만약 x가 양수라면:
그리고 x와 y가 같은 부호(check ?)라면 제 1사분면에 속하므로, 1을 반환한다.
그렇지 않다면 (즉, x와 y가 다른 부호인 경우), 제4사분면에 속하므로, 4를 반환한다.
반대로 x가 음수라면:
그리고 x와 y가 같은 부호(check ?)라면 제 3사분면에 속하므로, 3을 반환한다.
그렇지 않다면 (즉, x와 y가 다른 부호인 경우), 제2사분면에 속하므로, 2를 반환한다.
*/