Algorithm/Programmers

[프로그래머스 JS] 직사각형 넓이 구하기 / Math.max() Math.min()

그랴 2022. 12. 9. 15:11
더보기

문제 설명

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


제한사항
  • dots의 길이 = 4
  • dots의 원소의 길이 = 2
  • -256 < dots[i]의 원소 < 256
  • 잘못된 입력은 주어지지 않습니다.

입출력 예dotsresult
[[1, 1], [2, 1], [2, 2], [1, 2]] 1
[[-1, -1], [1, 1], [1, -1], [-1, 1]] 4

입출력 예 설명

입출력 예 #1

  • 좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.

입출력 예 #2

  • 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.

 

1. x좌표 값만 모은 배열과 y좌표 값만 모은 배열을 각각 만든다.

2. 각 배열에서 최대값과 최소값을 구한다.

3. 그들 사이의 차이값의 절대값을 구해 가로 세로 길이를 구한다.

4. 곱해서 넓이를 구한다.

function solution(dots) {
    let x_arr = [];
    let y_arr = [];
    
    dots.map((dot)=>{
        x_arr.push(dot[0]);
        y_arr.push(dot[1]);
    })

    let x = Math.abs(Math.max(...x_arr) - Math.min(...x_arr));
    let y = Math.abs(Math.max(...y_arr) - Math.min(...y_arr));
    let answer = x*y;
     
    return answer;
}

 

배열의 최대값과 최소값을 구할 때 자꾸 실수를 해서 이제 안 까먹으려고 적어놓는다.

...array 까먹지 말자! (Math.max(array), Math.max([array]) 둘다 안됨)

const array1 = [1, 3, 2];

console.log(Math.max(...array1));

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max

 

Math.max() - JavaScript | MDN

**Math.max()**함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.

developer.mozilla.org