BOJ
백준 3053번 택시 기하학 [C언어]
Sloth Coder
2022. 8. 29. 18:39
문제 출처: https://www.acmicpc.net/problem/3053
3053번: 택시 기하학
첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.
www.acmicpc.net
Sol)
#include <stdio.h>
#define _USE_MATH_DEFINES //math 헤더파일에 정의돼 있는 파이값을 사용하기 위해 필요.
#include <math.h>
int main(){
double radius;
scanf("%lf", &radius);
printf("%lf\n", M_PI * radius * radius);
printf("%lf\n", 2 * radius * radius);
return 0;
}
- 풀이 방향
문제의 설명을 읽어보니 유클리드 기하학으로 계산한 원은 우리가 평소에 알고 있는 바로 그 평범한 원이다. 그렇다면 이 넓이는 Pi * radius^2 으로 구하면 되겠다. 결국 택시 기하학으로 원의 넓이를 구할 수만 있다면 간단하게 풀 수 있는 문제가 되겠다.
- 풀이
택시 기하학에서 정의하는 원은 유클리드 기하학에서의 원과 같이 "평면상의 어떤 점에서 거리가 일정한 점들의 집합" 이다. 택시 기하학에서의 거리란 x좌표의 차의 절댓값 + y좌표의 차의 절댓값이다. 따라서 원의 중심을 (0, 0), 반지름의 길이를 1로 하는 택시기하학에서의 원은 다음과 같은 모양이 된다.
따라서 택시기하학에서의 원은 한 변이 √2radius 인 정사각형이 된다. 이 정사각형의 넓이는 2 * radius^2 과 같다.
- 문제에 대한 사견
유클리드 기하학이 아닌 다른 기하학에서는 도형이나 길이등에 관해 다른 정의를 가지고 있다는 사실이 정말 흥미로웠다. 수학을 잘 하면 세상을 여러 흥미로운 관점으로 바라볼 수 있을 것 같다.