Blog

직사각형 넓이 구하기

날짜 2023-10-03
사용 언어 Java
문제 유형 IF문
정답률 76%
문제 URL https://school.programmers.co.kr/learn/courses/30/lessons/120860

문제 #

문제 설명 #

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

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

나의 풀이 #

class Solution {
    public int solution(int[][] dots) {
        int answer = 0;
        
        if(dots[0][0] == dots[1][0] || dots[0][1] == dots[1][1]) {
            if(dots[0][0] == dots[2][0] || dots[0][1] == dots[2][1]) {
                answer = Math.abs((dots[0][0]-dots[3][0]) * (dots[0][1]-dots[3][1]));
            } else {
                answer = Math.abs((dots[0][0]-dots[2][0]) * (dots[0][1]-dots[2][1]));   
            }
        } else {
            answer = Math.abs((dots[0][0]-dots[1][0]) * (dots[0][1]-dots[1][1]));
        }
        
        return answer;
    }
}

dots[0]이랑 dots[1]에 동일한 좌표가 있는가 dots[0]이랑 dots[2]에 동일한 좌표가 있는가 answer = |dots[0][0]-dots[3][0] * dots[0][1]-dots[3][1]| 아닐경우 answer = |dots[0][0]-dots[2][0] * dots[0][1]-dots[2][1]| 아닐경우 answer = |dots[0][0]-dots[1][0] * dots[0][1]-dots[1][1]|


다른 사람의 풀이 #

class Solution {
    public int solution(int[][] dots) {

        int x = Math.max(Math.abs(dots[0][0] - dots[1][0]),Math.abs(dots[0][0] - dots[2][0]));
        int y = Math.max(Math.abs(dots[0][1] - dots[1][1]),Math.abs(dots[0][1] - dots[2][1]));
        return x*y;
    }
}

x좌표가 같은 점이 반드시 하나다 = dots[1] 이나 dots[2] 둘중 하나는 반드시 dots[0]이랑 x좌표가 다르다 => 두 점의 x좌표와 dots[0][0]과의 차의 절댓갑은 0 혹은 가로길이


관련개념 학습 #

Math