문제링크
https://www.acmicpc.net/problem/3053
문제
19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.
택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.
D(T1,T2) = |x1-x2| + |y1-y2|
두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.
따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.
원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합
반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와,
택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.
조건
시간제한 : 1초
메모리 제한 : 128 MB
입력
첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를,
둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다.
정답과의 오차는 0.0001까지 허용한다.
문제정리
1. 첫째 줄에는 유클리드 기하학에서의 원의 넓이를 구하여야합니다.
2. 두번째 줄에는 택시 기하학에서의 원의 넓이를 출력하여야 합니다.
이번 문제의 경우 유클리드 기하학과 택시 기하학에서의 원의 넓이를 구하여야합니다.
위키피디아에 정리가 깔끔히 되어있어서 가지고 와봤습니다.
https://en.wikipedia.org/wiki/Taxicab_geometry
결론은 유클리드 기하학에서는 위의 이미지 중 초록색이라고 할 수 있는데, 즉 우리가 알던 일반적인 원이라고 생각하면 될 것 같습니다. 원의 넓이를 구하는 공식은 원의넓이 = 반지름 * 반지름 * PI 입니다.
택시 기하학은 저도 처음 봤지만,, 위의 그림에서 보면 빨간색 파란색 노란색 은 어떤 길을 가더라도 똑 같이 12번 이동하게 됩니다. 즉 문제 에서 나타 냈었던 D(T1,T2) = |x1-x2| + |y1-y2| 라고 볼 수 있습니다.
그래서 택시 기하학에서의 원은 무엇이냐 라고 하면 마름모라고 볼 수 있습니다.
위의 그림과 같이 택시 기하학에서 거리가 같은 지점들을 이어서 그리면 마름모가 나오는 것을 확인해 볼 수 있습니다.
그리하여 원의 넓이는 = 대각선의 가로길이 * 대각선의 세로 길이 / 2 = 2R*2R/2 = 2*R*R 로 볼 수 있습니다.
C# 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
static void Main(string[] args)
{
StreamWriter writer = new StreamWriter(Console.OpenStandardOutput());
StreamReader reader = new StreamReader(Console.OpenStandardInput());
int R = int.Parse(reader.ReadLine());
writer.WriteLine($"{R * R * Math.PI:0.000000}");
writer.WriteLine($"{R * R * 2.0d:0.000000}");
writer.Close();
reader.Close();
}
|
cs |
읽어주셔서 감사합니다 오늘도 즐거운 하루 되세요.
'[C#] 백준 (알고리즘) > 브론즈 문제' 카테고리의 다른 글
[백준 - C#] 5086번 배수와 약수 (0) | 2022.11.06 |
---|---|
[백준 - C#] 2455번 지능형 기차 (0) | 2022.11.05 |
[백준 - C#] 5543번 상근날드 / 10953번 A+B-6 (0) | 2022.10.25 |
[백준 - C#] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 / 3046번 R2 (0) | 2022.10.24 |
[백준 - C#] 1934번 최소공배수 (0) | 2022.10.23 |