1. 문제 추상화
반지름 r이 주어질 때, 유클리드 기하학의 원의 넓이와 택시 기하학의 원의 넓이를 구하라.
2. 알고리즘
택시 기하학을 모르는 경우와 택시 기하학을 아는 경우 두 가지 풀이 방법이 있다.
첫 번째 방법 ( 택시 기하학을 모르는 경우 )
원의 정의는 같으나 택시 기하학을 모르면 어떤 원리로 원이 형성되는지 모른다. 다시 말해, '원주율'을 모른다. 그러나 이미 원주율이 예제에 주어져 있다.
유클리드 기하학에서 원주율은 ㅈ(파이)이다. 그리고 택시 기하학의 원주율은 2이다. 그러므로 유클리드 기하학에서 원의 넓이는 ㅈ*r2이므로 택시 기하학에서 원의 넓이는 2 * r2이다. 이런 풀이는 어떤 수학적 근거도 없는 얼토당토 않은 풀이지만 이런 식으로 유추해서 풀수 있다.
두 번째 방법 ( 택시 기하학을 아는 경우 )
택시 기하학은 기하학에 일상을 넣은 개념이다.
유클리드 기하학에서는 두 점 사이의 거리가 직선으로 표현 된다. 그러나 현실은 좀 다르다.
택시가 A에서 B에 가려면 장애물을 거쳐 가야한다. 그러므로 A(x1,y1) B(x2,y2)라 할 때, 두 점 사이의 거리는 아래와 같다.
검은점과 '같은 거리'에 있는 지점을 빨간점으로 표시해보았다. 블록이 커서 이렇게 보이지만 만약 블록이 무한으로 작아진다면 빨간점들이 모여 마름모를 만든다. 그러므로 택시기하학에서 원의 정의는 곧 '마름모'이다.
그럼 이제 마름모의 넓이를 구해보자. 마름모의 넓이는 두 대각선의 곱 / 2이다.
대각선의 길이 : 2 x r
마름모의 넓이 : ( 2x r x 2 x r ) / 2 = 2 x r2
택시 기하학의 원주율 : 2
3. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double r = sc.nextDouble();
double pi = Math.PI;
double taxiPi = 2;
System.out.printf("%.6f\n",pi*r*r);
System.out.printf("%.6f\n",taxiPi*r*r);
}
}
'문제풀이' 카테고리의 다른 글
[JAVA] 백준 2447번 별찍기-10 : 재귀함수 (0) | 2021.07.27 |
---|---|
[JAVA] 백준 11729번 하노이 탑 이동 순서 : 재귀함수 (0) | 2021.07.26 |
[JAVA] 백준 1002번 터렛 : 두 원의 교차점 (0) | 2021.07.24 |
[JAVA] 백준 3009 네 번째 점 : Simple is best (0) | 2021.07.23 |
[JAVA] 백준 1085번 직사각형에서 탈출 : 단서로 풀기 (0) | 2021.07.22 |