문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
풀이
const solution = ([[x1, y1], [x2, y2], [x3, y3], [x4, y4]]) => {
const width = x1 !== x2 ? Math.abs(x1-x2) : Math.abs(x1 - x3);
const height = y1 !== y2 ? Math.abs(y1-y2) : Math.abs(y1 - y3);
return width * height;
}
처음엔 점의 위치가 제각각이면 어떡하지? 로 고민을 했었는데,
어차피 그냥 x1,2,3,4 에서 두점씩은 같은 x일 것이고, (직사각형이니까)
y1,2,3,4도 두개씩 같은 y일꺼니까
그냥 x1이랑 x2를 비교해서 같지 않으면 x1에서 x2를 뺀 절대값(거리)
그게 아니라면 x1에서 x3을 뺀 절대값을 width로,
똑같이 y1, y2를 비교해서 같지 않으면 y1 - y2의 절대값을 height로,
그렇지 않다면 y1에서 y3을 뺀 절대값을 height로 저장 후
width * height를 리턴해주었다.