면적 A와 둘레 P가 주어졌을 때, 이 두 값을 만족하는 직육면체가 가질 수 있는 최대 부피를 구하는 방법을 알아보겠습니다. 예를 들어 둘레 P가 24이고 면적 A가 24일 때, 만들 수 있는 직육면체의 최대 부피는 8입니다.
기본 공식 정리
직육면체의 세 변을 각각 길이(length), 너비(breadth), 높이(depth)라고 할 때, 둘레·겉넓이·부피는 다음과 같이 정의됩니다.
- 둘레: P = 4 × (길이 + 너비 + 높이)
- 겉넓이: A = 2 × (길이×너비 + 너비×높이 + 길이×높이)
- 부피: V = 길이 × 너비 × 높이
최대 부피 유도 과정
둘레 조건에서 '길이 + 너비 + 높이 = P/4'임을 알 수 있고, 겉넓이 조건에서 '길이×너비 + 너비×높이 + 길이×높이 = A/2'임을 알 수 있습니다. 여기서 너비와 높이를 길이에 대한 식으로 치환하면, 부피 V를 길이 하나의 변수만으로 표현할 수 있습니다.
이렇게 정리된 부피 함수를 미분하여 극댓값을 구하면, 최대 부피를 만드는 한 변의 길이는 다음과 같습니다.
length = (P − √(P² − 24A)) / 12
이 값을 부피 공식에 대입하면 최대 부피는 다음과 같이 계산됩니다.
V = length × (A/2 − length × (P/4 − length))
C++ 구현 예제
#include <iostream>
#include <cmath>
using namespace std;
float maxVolumeCuboid(float Peri, float Area) {
float length = (Peri - sqrt(Peri * Peri - 24 * Area)) / 12;
float Vol = length * (Area / 2.0 - length * (Peri / 4.0 - length));
return Vol;
}
int main() {
float P = 20, A = 16;
cout << "Maximum volume of the cuboid will be: " << maxVolumeCuboid(P, A);
}실행 결과
Maximum volume of the cuboid will be: 4.14815
위 예제에서는 둘레 P = 20, 면적 A = 16일 때 최대 부피 약 4.14815가 계산됩니다. 이처럼 주어진 둘레와 면적만으로도 닫힌 형태의 수식을 활용하면 반복문 없이 상수 시간 O(1) 안에 직육면체의 최대 부피를 빠르게 구할 수 있다는 장점이 있습니다.