[백준 14173] Square Pasture (C#, C++) - soo:bak
작성일 :
문제 링크
설명
축에 평행한 두 직사각형을 모두 포함하는 최소 정사각형의 넓이를 구하는 문제입니다.
접근법
먼저 두 직사각형의 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;
}