본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[c++] 백준 3052 택시 기하학

백준 단계별로 풀어보기 [기본수학 2] 택시 기하학

https://www.acmicpc.net/problem/3053

 

3053번: 택시 기하학

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

www.acmicpc.net

 

[풀이]

유클리드 기하학과 택시 기하학에서 두 점 사이의 거리에 대한 서로 다른 정의를 하고 있음을 이해해야한다. 문제 설명에서도 나와있듯이 택시 기하학은 두 점 (x1, y1), (x2, y2) 에 대해서 두 점 사이의 거리를 |x1-x2|+|y1-y2| 로 정의하고 있으므로 한 점에서 모두 같은 거리에 있는 점으로 이루어지는 원에 대해서도 유클리드 기하학에서 말하는 원과는 다른 의미를 갖게된다. 

cout << fixed와 cout.precision(n)을 쓰면 소수점 이후 자리수를 n으로 정해 출력할 수 있다. 

 

[코드]

#include <iostream>

int main() {
	const double pi = 3.14159265358979;
	double r;
	std::cin >> r;
	
	std::cout << std::fixed;
	std::cout.precision(6);
	std::cout << pi * r * r << "\n";
	std::cout << r * r * 2;
	

	return 0;
}