백준 웹사이트 "3053번 - 택시 기하학" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
#define _USE_MATH_DEFINES //M_PI 이용을 위해
#include <math.h>
int main(void){
int R;
scanf("%d", &R);
// 유클리드 기하학의 원: (R^2)π
// 택시 기하학의 원: 2(R^2) (대각선이 2R인 마름모 모양)
printf("%f\n", (double) R*R*M_PI);
printf("%f\n", (double) 2*R*R);
}
문제 풀이
원이란, 평면 상의 어떤 점에서 거리가 일정한 점들의 집합입니다. 우리가 평소에 사용하는 기하학을 '유클리드 기하학'이라고 하는데, 유클리드 기하학에서의 원은 아래와 같습니다. 익숙한 모양이죠? 평면 상의 점 \((0, 0)\)에서 거리가 4인 점들의 집합은, 아래와 같은 원 \(x^2+y^2=16\)입니다.
유클리드 기하학에서 반지름이 \(R\)인 원의 넓이는 \(R^2\pi\)입니다.
택시 기하학은 유클리드 기하학이 아닌 기하학, '비유클리드 기하학'입니다. 비유클리드 기하학에는 여러가지가 있는데, 그 중 택시 기하학에서는 두 점 사이의 거리 \(D(T1,T2) \)가 \(|x1-x2|+|y1-y2|\)로 정의됩니다. 거리의 정의가 달라짐에 따라 원의 정의도 달라지는데, 택시 기하학에서의 원은 아래와 같습니다.
평면 상의 점 \((0, 0)\)에서 (택시 기하학 상) 거리가 4인 점들의 집합은, 위와 같이 \(|x|+|y|=4\)입니다. 예를 들어, \((4, 0)\)은 거리가 \(|4-0|+|0-0|=4\)이고, \((1, 3)\)도 거리가 \(|1-0|+|3-0|=4\)입니다. 택시 기하학에서 반지름이 \(R\)인 원은 유클리드 기하학에서 대각선의 길이가 \(2R\)인 마름모와 동일하므로, 넓이는 \(2R^2\)입니다.
지금까지 정리한 내용을 바탕으로 소스 코드를 작성해봅시다. C언어에서 \(\pi\) 값을 활용하기 위해서는 Line 2~3와 같이 헤더 파일을 추가해야 합니다.
#define _USE_MATH_DEFINES //M_PI 이용을 위해
#include <math.h>
이 코드의 뜻은, <math.h>에 저장된 (define 된) 여러가지 값들을 불러온다는 것입니다. 이 중 \(\pi\) 값은 'M_PI'를 통해 접근 가능합니다. 이 값은 소수 값이므로, 출력할 때 "%f"를 이용해주세요!
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 10926번 - ??! (0) | 2022.01.30 |
---|---|
[백준/C언어] 1002번 - 터렛 (0) | 2022.01.29 |
[백준/C언어] 4153번 - 직각삼각형 (0) | 2022.01.27 |
[백준/C언어] 3009번 - 네 번째 점 (0) | 2022.01.27 |
[백준/C언어] 1085번 - 직사각형에서 탈출 (0) | 2022.01.26 |