10. 직사각형 넓이 구하기(프로그래머스 LV.0)

yesolog·2024년 3월 7일
0

Algorithm

목록 보기
10/10

간만에 좀 재밌는 문제가 나와서 포스팅!

⬜ 문제 설명

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값 끼리의 뺄셈을 해준 뒤 절대값으로 올려서 widthheight를 구했다.
⚫ 마지막으로 widthheight를 곱하면 넓이가 나온다!

0개의 댓글