직사각형 넓이 구하기

난이도 중하
화낼거양's avatar
Mar 21, 2025
직사각형 넓이 구하기
Contents
정답
 
 

문제 설명

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

입출력 예 설명

입출력 예 #1
  • 좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.
입출력 예 #2
  • 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.
 
 
기본적으로 주어진 코드 :
class Solution { public int solution(int[][] dots) { int answer = 0; return answer; } }
 
 

정답

 
import java.util.Arrays; class Solution { public int solution(int[][] dots) { // 원소는 -256 ~ 256 사이, dots의 길이는 무조건 4 // 모든 값을 양수로 변경하기 위해 256을 더한다 for (int i = 0; i < dots.length; i++) { for (int j = 0; j < dots[i].length; j++) { dots[i][j] += 256; } } // 이중 배열을 왼쪽 값 기준으로 오름차순 정렬 x축을 기준으로 같은 숫자끼리 정렬 // ex :{ 1, 1 }, { 2, 1 }, { 2, 2 }, { 1, 2 } // || // || // { 1, 1 }, { 1, 2 }, { 2, 1 }, { 2, 2 } Arrays.sort(dots, (a, b) -> Integer.compare(a[0], b[0])); int width = dots[0][0] - dots[2][0]; // 가로길이 int height = dots[0][1] - dots[1][1]; // 세로길이 if (width < 0) { width *= -1; } if (height < 0) { height *= -1; } return width * height; } }
 
Share article

moohyun