[백준 알고리즘] 3053번: 택시기하학

3053번: 택시기하학

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.
택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.
D(T1,T2) = |x1-x2| + |y1-y2|, 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.
따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.

원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합.
반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.

접근 방법:

이 문제는 기하학 자체가 나한테 생소해서 택시 기하학에 대한 자료를 찾아보고 해결했다.. 사실 찾아보니까 너무 생각을 안하고 찾아보기만 했다는 생각이 들긴 하다.. 일단 유클리드 기하학의 원의 형태가 택시 기하학에서는 정사각형이다. 결국 원의 지름이 정사각형의 대각선 길이와 같다. 정사각형의 대각선 공식은 (한변의 길이) X sqrt(2) 이기 때문에 입력으로 받은 반지름X2를 대각선 길이로 잡고 한변의 길이에 대한 식으로 전개하면 (한변의 길이)^2 = 2r^2 이 된다. 첫줄에는 원의 넓이인 PI X r^2 을, 두번쨰 줄에는 정사각형의 넓이인 2r^2을 출력한다.

통과 코드:

#include <iostream>
#include <math.h>

using namespace std;

int main(){
    float r;
    cin >> r;
    cout << fixed;
    cout.precision(6); // 소수점 고정

    cout << M_PI * pow(r, 2) << endl;
    cout << 2 * pow(r, 2) << endl;

    return 0;
}

Written by@전여훈 (Click Me!)
고민이 담긴 코드를 만들자, 고민하기 위해 공부하자.