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

C++에서 밑변과 넓이가 주어진 삼각형의 최소 높이 구하기


문제 설명

두 개의 정수 ab가 주어졌을 때, 밑변이 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