백준온라인저지

3053번 택시 기하학

wonjjong 2018. 8. 18. 09:02

백준 온라인 저지 3053번 택시 기하학



문제 출처 : https://www.acmicpc.net/problem/3053





풀이 과정


처음에 택시 기하학이 좀 찾아봤습니다. 택시 기하학에 대해서는 아래 링크에 설명이 잘 되어있습니다. 

https://m.blog.naver.com/PostView.nhn?blogId=alwaysneoi&logNo=100172516753&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


간단히 요약하자면 유클리드 기하학에서는 우리가 평소에 알고있는 원의 모양을 가지지만, 택시 기하학에서는 45도 기울어진 정사각형의 모양을 가집니다. 


따라서 문제에서는 반지름 r이 주어지므로 유클리드 기하학에서의 원의 넓이는 우리가 알고 있는 PI * 반지름 * 반지름을 이용하여 구하면 됩니다.


택시 기하학에서의 원의 넓이는 정사각형의 넓이를 구하는 것이므로 반지름을 어떻게 이용할 것인지 생각해봐야 합니다. 


정사각형의 대각선의 길이 = 2r 이므로 한 변의 길이를 a라고 했을 때 (2r)^2 = 2a^2 (피타고라스 정리) 이므로 2r^2 = a^2  이 됩니다. 

정사각형의 넓이는 한 변의 길이 * 한 변의 길이 이므로 a^2가 되는데 a^2 = 2r^2이므로 이를 통해 간단하게 구할 수 있습니다.


이해가 잘 안되시면 위 링크에 그림 보시면서 글 보시면 이해가 더 잘 되실겁니다.





소스 코드

 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int r = Integer.parseInt(in.readLine());
		
		System.out.println(String.format("%6f", euclid(r)));
		System.out.println(String.format("%6f", taxi(r)));
	}

	public static double euclid(int r) {
		return Math.PI * (r * r);
	}

	public static double taxi(int r) {
		return 2 * r * r;
	}
}




'백준온라인저지' 카테고리의 다른 글

2420번 사파리월드  (0) 2018.09.12
2476번 주사위 게임  (0) 2018.08.31
2503번 숫자 야구  (0) 2018.08.27
1516번 게임 개발  (0) 2018.08.23
1946번 신입사원  (0) 2018.08.22