직사각형 넓이 구하기

Haizel·2023년 4월 7일
0

🧬 알고리즘 풀이

목록 보기
3/53
post-thumbnail

문제 설명

2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.

입출력 예

dotsresult
[[1, 1], [2, 1], [2, 2], [1, 2]]1
[[-1, -1], [1, 1], [1, -1], [-1, 1]]4

풀이

function solution(dots) {
/* 1. dots를 오름차순으로 정렬한다.
sort 결과 : [[1,1], [2,1], [2,2], [1,2]] -> [[1,1],[1,2],[2,1],[2,2]] */
  dots.sort((a,b) => a[0] - b[0]);
/* 2. sort 결과 -> [ [작은x , 작은y],[작은x, 큰y],[큰x, 작은y],[큰x, 큰y] ] 순으로,
      인덱스가 0, 1 이면 x축이 같아 -> y축(세로) 길이를 구할 수 있고,
      인덱스가 0, 2 이면 y축이 같아 -> x축(가로) 길이를 구할 수 있다. */  
    const ySide = Math.abs(dots[0][1] - dots[1][1]); //1-2
    const xSide = Math.abs(dots[0][0] - dots[2][0]); //1-2
    
    return ySide * xSide;
}

💡 코드 풀이
  1. dots를 오름차순으로 정렬한다.
  2. sort 결과 -> [ [작은x , 작은y],[작은x, 큰y],[큰x, 작은y],[큰x, 큰y] ] 순인 점을 이해하고,
  • 인덱스가 0, 1 이면 x축이 같아 -> y축(세로) 길이를 구할 수 있고
  • 인덱스가 0, 2 이면 y축이 같아 -> x축(가로) 길이를 구할 수 있다.
profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글