JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, LV.0] 직사각형의 넓이 구하기

sundori 2024. 12. 12. 06:32

목차

    문제 설명

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


     

    제한사항

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

     

    class Solution {
        public int solution(int[][] dots) {
            // x와 y 축 방향의 길이를 저장할 변수 초기화
            int x = 0;
            int y = 0;
    
            // dots 배열을 순회하며 조건에 따라 x, y 계산
            for (int i = 0; i < 4; i++) {
                // 첫 번째 점의 x 좌표와 다른 점들의 x 좌표 절댓값이 같으면 y 축 길이를 계산
                if (dots[0][0] == dots[i][0]) {
                    y = Math.abs(dots[0][1] - dots[i][1]);
                }
                // 첫 번째 점의 y 좌표와 다른 점들의 y 좌표 절댓값이 같으면 x 축 길이를 계산
                if (dots[0][1] == dots[i][1]) {
                    x = Math.abs(dots[0][0] - dots[i][0]);
                }
            }
            return x * y;
        }
    }

    코드 설명

    1. 주요 변수

    • dots: 2D 배열로, 점의 (x, y) 좌표를 저장.
    • x: x축 방향(가로)의 길이.
    • y: y축 방향(세로)의 길이.

    2. 계산 과정

    1. 첫 번째 점 선택:
      배열에서 첫 번째 점을 기준으로 사용.
    2. 반복문 순회:
      배열의 모든 점을 순회하면서 첫 번째 점과 동일한 축에 위치한 점을 찾음.
    3. 조건 비교:
      • x좌표가 같을 경우: 두 점의 y좌표 차이의 절댓값을 계산하여 세로 길이를 구함.
      • y좌표가 같을 경우: 두 점의 x좌표 차이의 절댓값을 계산하여 가로 길이를 구함.
    4. 결과 저장:
      비교를 통해 얻은 가로(x)와 세로(y) 길이를 변수에 저장.

    주요 개념

    • 절댓값 사용: 좌표 차이가 음수로 계산될 경우를 방지하여 항상 양의 값을 반환.
    • 축 방향 비교: 점들의 x좌표와 y좌표를 각각 비교하여 동일 축에 위치한 점 간의 거리를 구함.
    728x90