Programmers

[프로그래머스][JS] 직사각형 넓이 구하기

winter17 2023. 7. 6. 12:34

https://school.programmers.co.kr/learn/courses/30/lessons/120860

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(dots) {
    let xArr = []
    let yArr = []
    for (let i = 0; i < dots.length; i++){
        const [x, y] = dots[i]
        xArr.push(x)
        yArr.push(y)
    }
    const xResult = Math.max(...xArr) - Math.min(...xArr)
    const yResult = Math.max(...yArr) - Math.min(...yArr)
    return xResult * yResult;
}

좌표상에서 직사각형 넓이를 구하려면 x좌표 길이, y좌표 길이를 구해서 곱해주면 되는데

x좌표 길이 = (x값 중에 가장 큰 값 - x값 중에 가장 작은 값)

y좌표 길이 = (y값 중에 가장 큰 값 - y값 중에 가장 작은 값)

직사각형 넓이 = x좌표 길이 * y좌표 길이

위처럼 풀면 답을 도출해 낼 수 있다.

만약 위의 과정이 이해가 안 된다면 dots 배열에 있는 좌표를 직접 그려보는 것도 도움이 될 것이다.

 

나는 x좌표, y좌표를 각각 다른 배열에 담아서 그 배열에서 최대, 최소 값을 찾아 곱해주는 방식으로 풀었다.

 

function solution(dots) {
    var answer = 0;
    // (x2 - x1) * (y2 - y1)
    const xArr = dots.map(x => x[0])
    const x = Math.max(...xArr) - Math.min(...xArr)
    // console.log(x)
    const yArr = dots.map(x => x[1])
    const y = Math.max(...yArr) - Math.min(...yArr)
    // console.log(y)
    answer = x * y
    return answer;
}

리뷰

좌표 보는 방법을 까먹어서 [질문하기]에 있는 힌트를 보고 알았는데 그림을 그려서 계산해 보면 엄청 쉽다...