작성일 :

문제 링크

14173번 - Square Pasture

설명

축에 평행한 두 직사각형을 모두 포함하는 최소 정사각형의 넓이를 구하는 문제입니다.


접근법

먼저 두 직사각형의 x좌표 최솟값과 최댓값, y좌표 최솟값과 최댓값을 각각 구합니다.

가로 길이와 세로 길이 중 더 큰 값이 정사각형의 변 길이가 됩니다.

넓이는 변 길이의 제곱입니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program {
  static void Main() {
    var p1 = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
    var p2 = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);

    int minX = Math.Min(p1[0], p2[0]);
    int maxX = Math.Max(p1[2], p2[2]);
    int minY = Math.Min(p1[1], p2[1]);
    int maxY = Math.Max(p1[3], p2[3]);

    int len = Math.Max(maxX - minX, maxY - minY);
    Console.WriteLine(len * len);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;
  int x3, y3, x4, y4; cin >> x3 >> y3 >> x4 >> y4;

  int minX = min(x1, x3);
  int maxX = max(x2, x4);
  int minY = min(y1, y3);
  int maxY = max(y2, y4);

  int len = max(maxX - minX, maxY - minY);
  cout << len * len << "\n";

  return 0;
}