문제 설명
- 2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
- dots의 길이 = 4
- dots의 원소의 길이 = 2
- -256 < dots[i]의 원소 < 256
- 잘못된 입력은 주어지지 않습니다.
입출력 예
dots | result |
[[1, 1], [2, 1], [2, 2], [1, 2]] | 1 |
[[-1, -1], [1, 1], [1, -1], [-1, 1]] | 4 |
나만의 풀이
이 문제는 수학적으로 접근을 했다. 우선 직각 직사각형의 넓이는 (윗변 또는 아랫변) * (좌변 또는 우변)을 하면된다. 그리고 직사각형 특성상 길이가 윗변 === 아랫변, 좌변 === 우변라는 특징이 있으니 각 배열의 [0], [1] 위치에 숫자는 각 2종류의 수만 존재하게 되고 그 두 종류의 숫자를 빼고 절대값으로 치환하면 변의 길이가 나오게 된다.
구한 변의 길이들을 직사각형의 넓이 구하는 식에 넣으면 끝~~
코드는 [...new Set()]을 이용해 동일한 숫자를 지우고 Math.abs()를 이용해 절대값으로 치환했다~~
function solution(dots) {
let X = [...new Set(dots.map(a => a[0]))];
let Y = [...new Set(dots.map(a => a[1]))];
return (Math.abs(X[0] - X[1])) * (Math.abs(Y[0] - Y[1]));
}
'프로그래머스 JS LV0' 카테고리의 다른 글
LV0 76 삼각형의 완성조건(2) (0) | 2022.11.11 |
---|---|
LV0 75 컨트롤 제트 (0) | 2022.11.10 |
LV0 73 유한소수 판별하기 (0) | 2022.11.09 |
LV0 72 문자열 밀기 (0) | 2022.11.09 |
LV0 71 캐릭터의 좌표 (0) | 2022.11.08 |