2020. 9. 22. 11:30ㆍ알고리즘/Baekjoon
알고리즘 보다 수학적 지식만 알면되는 문제입니다. 유클리드 기하학이란,,, 아래 위키를 참고하세요! (백준 사이트 힌트란에 있습니다)
유클리드 기하학: 한국어 위키 영문 위키 Wolfram Mathworld
비유클리드 기하학: 한국어 위키 영문 위키 Wolfram Mathworld
택시 기하학: 한국어 위키 영문 위키 Wolfram Mathworld
택시 기하학은 비(非)유클리드 기하학인데요. 원의 넓이를 구할 때 정점에서 반지름 거리에 있는 점들의 집합이 '원'을 형성하기 때문에 거리 상에 있는 점을 구하는 방법이 다른 유클리드 기하학과 택시 기하학은 원 넓이에도 차이가 있습니다.
유클리드 기하학은 일반적인 π(3.14159...)를 사용한 원 넓이이며 택시 기하학은 마름모의 넓이가 됩니다. 뜬금없이 왠 마름모냐구요? 택시 기하학은 정점(x,y)로부터 반지름 거리에 있는 점(x',y')을 구할 때 |x-x'| + |y-y'| = r 공식을 만족해야 합니다. 예시가 보기 쉽도록 반지름 r이 1일 때 손수 택시 기하학 공식을 활용한 거리 상 점들을 찍어보았습니다.
저런 마름모꼴 정사각형이 됩니다. 각 변의 길이는 직각삼각형 피타고라스 정리(x2 + y2 = z2) 제곱 특수기호 찾아 넣기가 귀찮습니다ㅠㅠ...를 이용해 구해주면 됩니다. 길이 제곱이 곧 정사각형 넓이기 때문에 제곱근 할 필요없이 (R * R) * 2 해주면 되겠죠!
Java에서 Math API PI 메서드는 친절하게 π를 상수로 제공해줍니다. 그리고 원 넓이는 소수 여섯째자리까지 나타내야 합니다. Java에선 printf를 활용하면 편한데요, "%.6f"(6이 나타낼 소수점 자릿수, f가 데이터 타입: float) 요렇게 써주시면 소수점을 나타낼 수 있답니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package baekJoon.week9;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TaxiGeo_3053 {
private static int R;
private static double ucld;
private static double taxi;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
R = Integer.parseInt(br.readLine());
ucld = (R*R) * Math.PI;
taxi = (double) (R*R) * 2;
System.out.printf("%.6f\n%.6f",ucld, taxi);
}
}
|
cs |
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 1904 - 01 타일 (0) | 2020.10.14 |
---|---|
[백준] 1436 - 영화감독 숌 (0) | 2020.10.06 |
[백준] 2775 - 부녀회장이 될테야 (0) | 2020.09.18 |
[백준] 2292 - 벌집 (0) | 2020.09.14 |
[백준] 2941 - 크로아티아 알파벳 (0) | 2020.09.10 |