자료구조&알고리즘/알고리즘 - 대회 알고리즘

[알고리즘 문제 풀이][기하학] 백준 3053번 - 택시 기하학

초코쨔응 2022. 2. 15. 00:21

백준 3053번 택시 기하학 문제입니다.

(기하학 - 도형의 넓이)

 

- 문제 설명: https://www.acmicpc.net/problem/3053

- 문제 풀이:

 

첫번째 출력은 원의 넓이를 출력하는 것입니다. 원의 넓이는 𝜋𝑟² 이므로 어렵지 않을 것입니다.

 

두번째는 택시기하학에서 같은 점들로 이루어지는 도형의 넓이를 구해야합니다.

택시 기하학에서 거리는 문제에서 주어졌듯이, |x1-x2| + |y1-y2| 로 구해야합니다. (x1과 x2 차이의 절대값, y1과 y2 차이의 절대값)

예를 들어, 중간 지점인 (x1,y1) = (0,0)을 기준으로 삼고, 길이가 10이라면 아래와 같은 점들이 모두 길이가 10이 나온다는 것을 알 수 있습니다. 

여기서 x2 값을 한 칸 줄이고, y2 값을 한 칸 늘여도 거리는 10이 됩니다. 혹은 x2 값을 한 칸 늘이고, y2 값을 한칸 줄여도 거리가 10이 됩니다. 이것을 그림으로 그려보면 점점 마름모 형태가 되는 것을 볼 수 있습니다.

그래서 최종적으로는 원과 마름모의 넓이를 구하면 됩니다.

원의 넓이: 𝜋𝑟²

마름모의 넓이: 2𝑟²

 

- 코드

R = int(input())
print("{:.6f}".format(R*R*3.14159265359))
print("{:.6f}".format(R*R*2))

 

- 실수 포인트 & 반례:

질문 답변 게시판을 보면 반례 자체보다는 출력된 값이 문제에서 제시한 오차 범위 안에 들어오지 않아서 틀리는 경우가 많습니다. 자료형에 주의해서 코드를 작성해야하며, 정답과 오차가 0.0001 안에 들어오는지 확인해야합니다.