https://www.acmicpc.net/problem/16486
세연이네 학교 운동장은 아래와 같다.
위의 그림에서 영역 A와 B는 반원이며, 영역 C는 직사각형이다. 영역 C의 가로의 길이를 d1, 영역 A의 반지름의 길이 d2의 값이 주어지면 운동장의 한 바퀴 둘레를 알아내는 프로그램을 작성하시오. (단, 이 문제에서는 π (원주율)의 값을 3.141592라고 한다.)
첫째 줄에 d1의 값이 주어진다. 둘째 줄에는 d2의 값이 주어진다. (d1, d2의 값은 100,000 이하의 양의 정수)
첫째 줄에 문제에서 요구하는 정답을 출력한다. 절대/상대 오차는 10-6 까지 허용한다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Num16486 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); /* A , B : 반원 C : 직사각형 d1 : C의 가로 길이 d2 : A의 반지름 */ double d1 = Double.parseDouble(br.readLine()); double d2 = Double.parseDouble(br.readLine()); double result = (2 * d1) + (2 * d2 * Math.floor(Math.PI * 1000000)/1000000.0); System.out.println(result); } }
문제를 보고나서, 주석으로 문제를 정리해보고 난 후,
그림을 그려서 둘레를 구해보았다.
주어진 입력을 통해서 계산하게되면 이상없었지만, 코드를 작성하면 소수점이 안나와서 정답이 틀렸다.
너무 성급하게 푼 나머지...
double로 해야하는것을 int라고 해서 풀어서 정답이 안나왔다.
총 둘레
: (C의 가로 2) + (2 3.141592 * a의 반지름)