프로그래머스 JS LV0

LV0 74 직사각형 넓이 구하기

와라리요 2022. 11. 10. 12:46

문제 설명

 - 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