단계별로 풀어보기 - 수학 2단계 - [9단계] 3053번
문제
문제 링크 : www.acmicpc.net/problem/3053
입력 복사 :
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자리에서 알아서 반올림하여 출력해준다...편해...!
결과
'Baekjoon > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ / 백준] 10872번 팩토리얼 C++ 문제 풀이 (0) | 2020.11.20 |
---|---|
[BOJ / 백준] 1002번 터렛 C++ 문제 풀이 (0) | 2020.11.20 |
[BOJ / 백준] 4153번 직각삼각형 C++ 문제 풀이 (0) | 2020.11.15 |
[BOJ / 백준] 3009번 네 번째 점 C++ 문제 풀이 (0) | 2020.11.11 |
[BOJ / 백준] 1085번 직사각형에서 탈출 C++ 문제 풀이 (0) | 2020.11.11 |