본문 바로가기
⛓ 자료구조

백준 3053, 택시 기하학 (자바/java)

by 비타민찌 2022. 4. 6.
728x90

백준 3053 택시 기하학 (자바/java)

 

문제

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.

택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.

D(T1,T2) = |x1-x2| + |y1-y2|

두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.

따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.

원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합

반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.

 

출력

첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.

 

 

[풀이]

무슨 말인지 몰라서 찾아보니

맨해튼 거리 (Manhattan distance) 라는 용어가 연관검색어에 었다.

택시 기하학 = 맨해튼 거리!

일반적으로 우리가 알고 있던 '거리' 구하기 개념은 유클리드 기하학이었는데,

D(T₁, T₂)² = (𝑥₁ - 𝑥₂)² + (y₁ - y₂)²

 

택시기하학에서 '거리'라는 개념을 새로 정의한 것이다.

D(T₁, T₂) = |𝑥₁ - 𝑥₂| + |y₁ - y₂|

 

그럼 이제 문제에서 요구하는

유클리드 기하학에서 원의 넓이와 택시 기하학에서 원의 넓이를 구해보자.

 

우리가 익히 알고 있는 파이알제곱은 Pi * r2

유클리드 기하학 원의 넓이 구하는 공식이다.

그리고 택시 기하학에서의 원의 넓이는..

중심 점에서 반지름이라고 불리는 일정한 거리만큼 떨어져 있는 점들의 집합이다.

 

좀 전의 택시 기하학 공식에서 D는 거리였다.

D(T1,T2) = |x1-x2| + |y1-y2|

 

이제 이 D를 반지름이라고 생각해서,

중심 점에서 반지름이라고 불리는 일정한 거리만큼 떨어져 있는 점들의 집합 이라는 말을 공식으로 나태내보면 다음과 같다.

D = |𝑥| + |y|

이런 정사각형이 45도 기울어진 도형이 나오는데,

주어진 r을 이용해 이등변 삼각형 넓이를 구하듯 이 도형의 넓이를 구해보면

택시기하학에서의 원의 넓이는 2𝑟²가 된다.

 

유클리드 기하학에서의 원의 넓이 = 𝜋𝑟²

택시 기하학에서의 원의 넓이 = 2𝑟²

 

그럼 이제 반지름(거리) 𝑟 을 입력받고

위 두 공식에 대입하여 출력하는 코드를 작성해보자.

이 때 출력시 오차 범위가 0.0001 이므로 double 형을 사용하고, 𝜋 값은 Math.PI를 사용한다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		double R = Double.parseDouble(br.readLine()); // 반지름
	
		System.out.println(R * R * Math.PI);	// 유클리드 원의 넓이
		System.out.println(2 * R * R);		// 택시기하학 원의 넓이
	}
}
 

 

 

 

728x90

댓글