μ•Œκ³ λ¦¬μ¦˜ 문제/BOJ_Java

[BOJ/Step9] 3053 : νƒμ‹œ κΈ°ν•˜ν•™ (JAVA)

NaNaRinπŸ™ƒ 2021. 1. 19. 21:42

www.acmicpc.net/problem/3053

 

3053번: νƒμ‹œ κΈ°ν•˜ν•™

첫째 μ€„μ—λŠ” μœ ν΄λ¦¬λ“œ κΈ°ν•˜ν•™μ—μ„œ λ°˜μ§€λ¦„μ΄ R인 μ›μ˜ 넓이λ₯Ό, λ‘˜μ§Έ μ€„μ—λŠ” νƒμ‹œ κΈ°ν•˜ν•™μ—μ„œ λ°˜μ§€λ¦„μ΄ R인 μ›μ˜ 넓이λ₯Ό 좜λ ₯ν•œλ‹€. μ •λ‹΅κ³Όμ˜ μ˜€μ°¨λŠ” 0.0001κΉŒμ§€ ν—ˆμš©ν•œλ‹€.

www.acmicpc.net


문제

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


풀이

μ›μ˜ μ •μ˜λŠ” μ–΄λ–€ μ μ—μ„œμ˜ 거리가 μΌμ •ν•œ μ λ“€μ˜ 집합이닀.

νƒμ‹œ κΈ°ν•˜ν•™μ—μ„œμ˜ 거리의 μ •μ˜κ°€ D(T1,T2) = |x1-x2| + |y1-y2| 둜 μ •μ˜λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 

νƒμ‹œ κΈ°ν•˜ν•™μ—μ„œμ˜ 원은, ν•œ 점이 (0, 0) 원점이라고 ν•  λ•Œ x + yκ°€ μΌμ •ν•œ μ λ“€μ˜ 집합이닀.

νƒμ‹œ κΈ°ν•˜ν•™μ—μ„œμ˜ 원

λ”°λΌμ„œ μ›μ˜ 넓이λ₯Ό κ΅¬ν•˜λ©΄

μœ ν΄λ¦¬λ“œ κΈ°ν•˜ν•™ : PI * R * R

νƒμ‹œ κΈ°ν•˜ν•™ : 2 R * R ( = 2R * 2R / 2 )

이 λœλ‹€.

 

import java.util.Scanner;

public class B3053 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int r = sc.nextInt();

		double r1 = Math.PI * r * r;
		double r2 = 2 * r * r;
		
		System.out.println(r1);
		System.out.println(r2);
	}
}