Baekjoon/단계별로 풀어보기

[BOJ / 백준] 3053번 택시 기하학 C++ 문제 풀이

728x90

단계별로 풀어보기 - 수학 2단계 - [9단계] 3053번

문제

문제 링크 : www.acmicpc.net/problem/3053

 

3053번: 택시 기하학

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

www.acmicpc.net

입력 복사 : 

1

 

CODE

#include <iostream>
#define PI 3.1415926535897932
using namespace std;

int main() {
	double r;
	cin >> r;

	cout << fixed;
	cout.precision(6);
	cout << r * r*PI << "\n" << 2 * r*r << "\n";
}

 

풀이

유클리드 기하학에서 두 지점의 거리는 좌표평면 상 최단거리를 말한다.

출처 : 위키백과

위 그림을 볼 때, 유클리드 기하학에서 두 점 사이의 거리는 초록색이라고 할 수 있다.

 

하지만 택시 기하학에서는 다르다.

하지만 실제 도시에서 택시가 한 지점에서 다른 지점으로 이동한다고 생각해보자.

택시는 건물을 뚫고 지나갈 수 없으므로 건물을 피해 좌우로 꺾어 이동할 것이다.

 

위 그림에서 택시가 빨간색, 파란색, 노란색 중 어떤 길로 가더라도 택시는 같은 거리 12를 이동할 것이다.

이 거리를 택시 기하학에서 이동한 거리라고 말할 수 있으며

D(T1,T2) = | x1 - x2 | + | y1 - y2 | 와 같이 나타낼 수 있다.

 

그렇다면 택시 기하학에서 원은 어떻게 나타낼 수 있을까?

원은 '평면상의 어떤 점에서 거리가 일정한 점들의 집합'을 말한다.

모눈종이에 택시 기하학에서의 원을 그려보면 다음 그림과 같다.

출처 : 월간 조선

혼란스러울 수 있지만, 

원점에서부터 마름모를 이루는 어떤 점이라도 모눈을 따라 거리를 재보면 3일 것이다.

 

따라서 택시 기하학에서 반지름 R인 원의 넓이는

두 대각선의 길이가 2R인 마름모의 넓이와 같다.

즉 택시 기하학에서 반지름이 R인 원의 넓이는 2R^2이다.

 

코드에서 PI를 정의해서 사용하였다.

3.1415926535로 정의해서 사용했을때 틀렸습니다가 떠서 길게 가져와서 정의했다.

이런 오차까지 판별하는 테스트케이스가 있는건가,,,

 

	cout << fixed;
	cout.precision(6);

위와 같이 cout이 소수점 6자리까지 출력하도록 설정하였다.

7자리에서 알아서 반올림하여 출력해준다...편해...!

 

 

결과

 

728x90