반응형
[ 문제 ]
컵라면은 두 개의 밑면이 서로 평행하며, 원 모양인 원뿔대이다. 따라서 컵라면을 옆에서 본 모습은 아래 그림과 같은 등변사다리꼴이다.
위 등변사다리꼴에서 민수가 측정한 컵라면의 윗면의 지름은 D1, 아랫면의 지름은 D2이다. 민수가 아직 측정하지 않은 변의 길이는 K이다. 이때, (컵라면의 높이)2의 값을 알아내는 프로그램을 작성하시오. (단, 컵라면의 높이는 등변사다리꼴에서 평행한 두 변 사이의 거리로 정의한다.)
[ 코드 ]
int k = int.Parse(Console.ReadLine());
string[] d = Console.ReadLine().Split();
int d1 = Math.Max(int.Parse(d[0]), int.Parse(d[1]));
int d2 = Math.Min(int.Parse(d[0]), int.Parse(d[1]));
double result = 0;
if(d1 == d2) // 윗변=아랫변일시 직사각형or정사각형.. 높이 = 빗변k이므로 그냥 k제곱해주면됨
{
result = (int)Math.Pow(k, 2);
}
else
{
result = Math.Pow(k, 2) - Math.Pow((d1 - d2) / 2.0, 2); // 피타고라스 공식
}
Console.Write(result);
[ 추가 ]
그림으로 그려왔는데 형편없을지도 모른다......
어렵게 생각할문제는 아니고 윗변과 아랫변, 빗변이 주어졌으니 충분히 삼각형으로 풀 수 있을것이라 생각해서 풀었다.
저렇게 D2를 기준으로 두개의 직선을 내렸을때 가운데는 직사각형 양 옆은 직각 삼각형이 만들어지게 된다.
넓이를 구하는게 아니라 높이를 구하는 것이기 때문에 다른 복잡한 행동을 취하지않고 피타고라스 c^2 = a^2+b^2 을 이용해서 알아내면 된다.
만약 윗변 = 아랫변 이라면 직사각형 또는 정사각형이기때문에 높이 = 빗변의 길이와 같다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/16479
현재 알고리즘을 풀면 자동으로 업로드 해주는 백준허브를 사용중인데 너무 편리하다...
이렇게 브론즈문제 실버문제도 나눠주고....... 문제도, 내 코드도 알아서 올려주고...
댓글로 이런 기능이 있다 알려주신 개발자분 너무 유용하게 사용하고있습니다 ㅎㅎ 감사합니다
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 24444번 알고리즘 수업 - 너비 우선 탐색 1 (오름차순) (0) | 2024.04.27 |
---|---|
[C#] 백준 1002번 터렛 (두 원 사이의 접점의 개수) (0) | 2024.04.26 |
[C#] 백준 9237번 이장님 초대 (0) | 2024.04.23 |
[C#] 백준 1026번 보물 (0) | 2024.04.22 |
[C#] 백준 27434번 팩토리얼 3 못푼문제 (실패) (4) | 2024.04.20 |