직사각형 넓이 구하기
날짜 | 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
의 길이 = 4dots
의 원소의 길이 = 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 혹은 가로길이