간만에 좀 재밌는 문제가 나와서 포스팅!
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다.
직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
⚫ dots의 길이 = 4
⚫ dots의 원소의 길이 = 2
⚫ -256 < dots[i]의 원소 < 256
⚫ 잘못된 입력은 주어지지 않습니다.
function solution(dots) {
const first = dots[0];
let diagonal = dots
.filter((item) => first[0] !== item[0] && first[1] !== item[1])
.flat();
const width = Math.abs(first[0] - diagonal[0]);
const height = Math.abs(first[1] - diagonal[1]);
const area = width * height;
return area;
}
⚫ 네개의 꼭지점이니 dots
의 첫번째 인자와 x,y의 값이 전부 다른 인자가 대각선에 놓인 점이 된다.
⚫ filter
메서드를 사용해서 x랑 y가 모두 다른 아이템을 솎아낸 뒤 flat
메서드를 사용하여 중첩배열을 평탄화 시켰다.
⚫ 이후 두 인자의 x값 끼리의 뺄셈, y값 끼리의 뺄셈을 해준 뒤 절대값으로 올려서 width
와 height
를 구했다.
⚫ 마지막으로 width
와 height
를 곱하면 넓이가 나온다!