이 영역을 누르면 첫 페이지로 이동
hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

페이지 맨 위로 올라가기

hoonDEV

BOJ 3053 - 택시 기하학 문제풀이

  • 2020.04.08 20:54
  • 알고리즘/문제풀이

문제를 읽고 이해하기

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.

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

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

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

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

입력

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

출력

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

재정의와 추상화

유클리드 기하학에서 한 점과 다른 한 점 사이의 거리는 아래와 같이 정의된다.

따라서 원은 아래와 같이 그려진다.

유클리드 기하학에서의 원

반면에 택시 기하학에서 한 점과 다른 한 점 사이의 거리는 아래와 같이 정의된다.

따라서 원은 아래와 같이 그려진다.

택시 기하학에서의 원

따라서 유클리드 기하학에서의 원의 넓이는 원래 우리가 알고 있던대로

PI(3.1415...) * r^2

이다.


반면에 택시 기하학에서의 원의 넓이는 아래와 같다.

(2 * r) * (2 * r) / 2

위 공식은 (한 대각선) * (다른 대각선) / 2로, 마름모 넓이 공식이다. 더 나아가, 택시 기하학에서의 원은 항상 정사각형 꼴을 띄므로 정사각형 넓이 공식을 통해 아래와 같이 구할 수도 있다.

((루트 2) * r)^2

코드 작성

#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int r;
    cin >> r;
    cout << fixed;
    cout.precision(6);
    cout << M_PI * pow(r, 2) << '\n';
    cout << pow(2 * r, 2) / 2;
    return 0;
}
  • 파이 값은 cmath 헤더에 포함된 M_PI 매크로를 사용하면 된다.
  • 단, M_PI 매크로를 사용하려면, 최상단에 #define _USE_MATH_DEFINES를 사용해야 한다.

그림 출처

https://m.blog.naver.com/alwaysneoi/100172516753?view=img_7

'알고리즘 > 문제풀이' 카테고리의 다른 글

BOJ 10250 - ACM 호텔 문제풀이  (0) 2020.04.08
BOJ 2292 - 벌집 문제풀이  (0) 2020.04.08
BOJ 2580 - 스도쿠 문제풀이  (0) 2020.04.08
BOJ 1654 - 랜선 자르기 문제풀이  (0) 2020.04.07
BOJ 1436 - 영화감독 숌  (0) 2020.04.07

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • BOJ 10250 - ACM 호텔 문제풀이

    BOJ 10250 - ACM 호텔 문제풀이

    2020.04.08
  • BOJ 2292 - 벌집 문제풀이

    BOJ 2292 - 벌집 문제풀이

    2020.04.08
  • BOJ 2580 - 스도쿠 문제풀이

    BOJ 2580 - 스도쿠 문제풀이

    2020.04.08
  • BOJ 1654 - 랜선 자르기 문제풀이

    BOJ 1654 - 랜선 자르기 문제풀이

    2020.04.07
다른 글 더 둘러보기

정보

hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

  • hoonDEV의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그

카테고리

  • 분류 전체보기 (91)
    • 일상 (13)
      • 후기 (1)
      • 계획 (11)
    • 공지사항 (1)
    • 알고리즘 (54)
      • 문제풀이 (53)
      • 이론 (1)
    • 공부 (19)
      • React (0)
      • Angular (5)
      • Java (3)
      • C, C++ (3)
      • JavaScript (6)
      • WEB (2)
    • 디자인 (1)
      • UI, UX (1)
    • 개발 (0)
      • boom (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 이분탐색
  • 문제풀이
  • 백준
  • 알고리즘
  • javascript
  • dp
  • 그리디
  • es6

나의 외부 링크

정보

훈개발자의 hoonDEV

hoonDEV

훈개발자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 훈개발자. Designed by Fraccino.

티스토리툴바