Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 주어진 둘레로 만들 수 있는 직사각형의 최대 면적 구하기

직사각형의 둘레(perimeter)가 주어졌을 때, 그 둘레를 가지는 직사각형이 가질 수 있는 최대 면적을 구하는 것이 이번 글의 목표입니다.

핵심 개념 정리

직사각형은 마주 보는 두 변의 길이가 각각 같고 서로 평행한 평행사변형의 일종입니다.

둘레(Perimeter)는 직사각형 네 변의 길이를 모두 더한 값으로, 직사각형 외곽선의 총 길이라고도 할 수 있습니다. 둘레를 구하는 공식은 다음과 같습니다.

둘레 = 가로 + 세로 + 가로 + 세로 = 2 × (가로 + 세로)

면적(Area)은 직사각형이 차지하는 크기를 의미하며, 다음 공식으로 계산합니다.

면적 = 가로 × 세로

최대 면적을 구하는 접근 방법

주어진 둘레로 만들 수 있는 직사각형의 최대 면적을 구하려면, 둘레로부터 가로와 세로 값을 도출해야 합니다. 가장 효율적인 방법은 다음과 같습니다.

  • 가로 = ceil(둘레 ÷ 4) — 둘레를 4로 나눈 값의 올림
  • 세로 = floor(둘레 ÷ 4) — 둘레를 4로 나눈 값의 내림
  • 최대 면적 = ceil(둘레 ÷ 4) × floor(둘레 ÷ 4)

이 공식을 사용하면 주어진 둘레에서 얻을 수 있는 가로와 세로의 최적 조합을 찾아 최대 면적을 손쉽게 계산할 수 있습니다. 참고로 둘레가 4로 나누어떨어지는 경우에는 가로와 세로가 같아져 정사각형이 되며, 이때 최대 면적을 얻게 됩니다.

입력 및 출력 예시

입력: 둘레 = 95
출력: 둘레 95로 만들 수 있는 직사각형의 최대 면적 = 552

입력: 둘레 = 2.78
출력: 둘레 2.78로 만들 수 있는 직사각형의 최대 면적 = 0

알고리즘 단계

  1. 직사각형의 둘레를 입력값으로 받습니다.
  2. result = ceil(둘레 ÷ 4) × floor(둘레 ÷ 4) 를 계산합니다.
  3. 결과를 반환하고 출력합니다.

C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;
// 주어진 둘레로 만들 수 있는 직사각형의 최대 면적 계산
int Maximum(float perimeter){
    int len = (int)ceil(perimeter / 4);
    int bre = (int)floor(perimeter / 4);
    // 면적 반환
    return len * bre;
}
int main(){
    float perimeter = 27;
    cout<<"둘레 "<<perimeter<<"로 만들 수 있는 직사각형의 최대 면적: "<<Maximum(perimeter);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

둘레 27로 만들 수 있는 직사각형의 최대 면적: 42