문제 설명
두 개의 정수 a와 b가 주어졌을 때, 밑변이 b이고 넓이가 최소한 a 이상인 삼각형을 만들 수 있는 가장 작은 높이를 구하는 문제입니다.
예시
a = 16, b = 4일 때, 최소 높이는 8입니다.
알고리즘
삼각형의 넓이는 다음 공식으로 계산할 수 있습니다.
넓이 = ½ × 높이 × 밑변
위 공식을 변형하면 높이를 다음과 같이 구할 수 있습니다.
높이 = (2 × 넓이) ÷ 밑변
여기서 구한 값이 정수가 아닐 수 있으므로, 조건(넓이가 최소한 a 이상)을 만족하기 위해서는 결과값에 ceil() 함수를 적용하여 올림 처리한 값이 곧 최소 높이가 됩니다. 예를 들어 계산 결과가 7.2라면, 실제 넓이가 a 이상이 되려면 높이를 8로 올려야 하기 때문입니다.
구현 예제
#include <iostream>
#include <cmath>
using namespace std;
float minHeight(int area, int base) {
return ceil((2 * area) / (float)base);
}
int main() {
int area = 16, base = 4;
cout << "최소 높이 = " << minHeight(area, base) << endl;
return 0;
}
참고: 정수 나눗셈으로 인해 소수점 이하가 잘리는 것을 방지하려면, 나누기 전에 값을
float또는double로 형 변환하는 것이 안전합니다.
실행 결과
위 프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
최소 높이 = 8