작성일 :

문제 링크

2959번 - 거북이

설명

거북이가 네 방향으로 움직여 만든 도형에서 가장 큰 직사각형의 면적을 구하는 문제입니다.

총 네 번의 직선 이동이 주어지며, 각 이동 거리는 서로 다른 네 개의 양의 정수로 구성되어 있습니다.

따라서, 이 중 두 개씩 짝지어 직사각형을 만들 수 있다면 해당 직사각형의 면적을 계산할 수 있습니다.

최대한 큰 직사각형을 만들기 위해서는

서로 같은 길이를 가진 두 쌍을 선택하여 가로와 세로를 구성하는 것이 가장 적절합니다.


접근법

주어진 네 개의 수를 정렬한 뒤,

가장 인접한 쌍을 선택해 두 수의 곱으로 면적을 계산합니다.

  • 정렬을 진행하면 가장 작은 두 수와 가장 큰 두 수가 이웃하게 배치되므로,
  • 가능한 사각형 중 가장 큰 정사각형 또는 직사각형을 쉽게 구할 수 있습니다.


즉, 정렬한 배열의 0번째 수와 2번째 수를 곱하면

가장 큰 직사각형을 만들 수 있는 조합이 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
using System;
using System.Linq;

class Program {
  static void Main() {
    var nums = Console.ReadLine().Split().Select(int.Parse).ToList();
    nums.Sort();
    Console.WriteLine(nums[0] * nums[2]);
  }
}

C++

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

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

  vi n(4);
  for (int &x : n)
    cin >> x;

  sort(n.begin(), n.end());

  cout << n[0] * n[2] << "\n";

  return 0;
}