https://www.acmicpc.net/problem/3053
3053번: 택시 기하학
첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.
www.acmicpc.net
이 문제는 원리를 알기만 하면 매우 간단하게 구현이 가능하다.
레벨은 브론즈3이지만 이 마저도 원리 이해에 대한 난이도 때문에 올라간거지 사실상 입출력 문제이다.
나는 이 문제에 대한 원리를 이해하지 못 해 스스로 풀이하지 못하였으므로 원리에 대한 설명을 중심으로 한 문제 리뷰 포스팅을 작성하고자 한다.
문제 리뷰)
문제를 잘 읽어보면, 기하학의 종류에 따라 두 점 사이의 거리를 측정하는 방법이 다르다는 것을 알 수 있다.
우리가 흔히 사용하는 두 점 사이의 거리 공식은 유클리드 기하학을 따른다.
하지만 이 문제에서는 택시 기하학에 따른 거리 공식을 사용하여야 한다.
원이란, 평면 상의 어떠한 점(중심 점)에서 거리가 일정한 점들의 집합이다.
즉, 거리를 어떻게 정의하냐에 따라 원도 달라진다.
따라서 유클리드 기하학에서의 원과 택시 기하학에서의 원은 서로 다르며,
이 문제에서는 두 기하학에서의 원의 넓이를 출력해내는 문제이다.
그럼 원의 넓이를 어떻게 구하면 될까?
유클리드 기하학에서의 원은 우리가 다 아는 그냥 동그란 원이다.
따라서, PI*R^2 파이 알 제곱을 사용하면 된다.
이제 문제는 택시 가하학에서의 원이다.
택시 기하학에서의 원은
마름모가 된다.
따라서, 마름모의 넓이를 구해주면 된다.
입력에서 주어지는 것은 반지름의 길이이며, 해당 반지름은 마름모의 대각선 길이의 반이다.
따라서, 해당 마름모(택시 기하학에서의 원)의 넓이는 2*R*R이 된다.
import math
r = int(input())
print(math.pi*r*r)
print(2*r*r)
'코딩 문제' 카테고리의 다른 글
백준 14888 - 연산자 끼워넣기 (0) | 2023.01.10 |
---|---|
백준 2563- 색종이 (0) | 2023.01.07 |
백준 2057 - 팩토리얼 분해 (0) | 2023.01.04 |
백준 17103 - 골드바흐 파티션 (0) | 2023.01.03 |
백준 9663 - N-Queen (0) | 2022.10.17 |