코딩테스트/알고리즘 문제풀이

[파이썬] 3053 : 택시 기하학

지과쌤 2021. 7. 28.
반응형

문제

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.

택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.

D(T1,T2) = |x1-x2| + |y1-y2|

두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.

따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.

원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합

반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.

출력

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

예제 입력 1 복사

1

예제 출력 1 복사

3.141593

2.000000

예제 입력 2 복사

21

예제 출력 2 복사

1385.442360

882.000000

예제 입력 3 복사

42

예제 출력 3 복사

5541.769441

3528.000000


먼저, 택시 기하학에 대해서 이해할 필요가 있다.

 

https://m.blog.naver.com/alwaysneoi/100172516753

 

[택시 기하학] 유클리드 기하학과 택시 기하학의 차이

지금까지 우리가 배운 것은 유클리드 기하학이다 우리가 초등학교를 시작으로 중학교를 거쳐 고등학교까지 ...

blog.naver.com

 

위 블로그 글을 보며 택시 기하학에 대해서 어느정도 개념을 습득하였고, 문제에서 주어진 조건들을 만족하는 코드를 짰다.


import math
class Taxi:
    #유클리드 기하학에서의 원의 넓이
    def euclid(self, r):
        return '{:.6f}'.format(round(r**2*math.pi, 6))
        
    #택시 기하학에서의 원의 넚이
    def taxi(self, r):
        return '{:.6f}'.format(round(2*(r**2), 6))

if __name__ == "__main__":
    a = Taxi()
    inputNum = int(input())
    print(a.euclid(inputNum))
    print(a.taxi(inputNum))
반응형

댓글

💲 추천 글