[프로그래머스 | Javascript] 코딩테스트 입문 - 직사각형 넓이 구하기

박기영·2022년 11월 15일
1

프로그래머스

목록 보기
91/159
post-custom-banner

solution

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, 즉, 가로의 길이를 구할 수 있다.

그렇게 구한 두 값을 곱해주면 넓이가 나온다!

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글