function solution(dots) {
dots.sort((a,b) => a[0] - b[0]);
const oneSide = Math.abs(dots[0][1] - dots[1][1]);
const otherSide = Math.abs(dots[0][0] - dots[2][0]);
return oneSide * otherSide;
}
쉽다고 생각하고 풀었으나, 예외 상황이 있었다.
어떤 좌표가 어디에 들어있는지는 정해지지 않았다는 것이다.
입력값은 어떻게든 마구잡이로 나올 수 있다는 것을 유념해야했다.
현재 필자가 구현한 sort()
는 1차원 배열의 인덱스가 0인 부분을 비교해서 정렬한다.
따라서 x
축 값이 작은 것들이 먼저 앞쪽에 오게 된다.
[ [x 작은 놈, y],[x 작은 놈, y],[x 큰 놈, y],[x 큰 놈, y] ]
이런 형태가 된다.
그런데 우리가 알고싶은건 사각형의 가로, 세로 길이이다.
저 배열에서 어떻게 구할까?
그렇다.
인덱스가 0, 1인 애들을 비교하면 x
축이 같기 때문에 y
, 즉, 세로의 길이를 구할 수 있고,
인덱스가 0, 2인 애들을 비교하면 y
축 값이 다르든 말든 x
, 즉, 가로의 길이를 구할 수 있다.
그렇게 구한 두 값을 곱해주면 넓이가 나온다!