20151024


*이 문제는 삼각함수 피타고라스의 정리 을 알고 있어야 합니다.
*이문제는 dovelet 에 있는 알고리즘 문제입니다.



x 길이 구하기/x_length 




프로그램 명: x_length    

제한시간:  1 초

오른쪽 그림과 같은 형식으로 x가 그려질 때, x에 사용되는 곡선과 선분의 길이의 합을 구하는 프로그램을 작성하라.

단, 원주율은 3.14159

입력

첫 번째 줄에 자연수 a와 b가 공백으로 구분되어 주어진다. (1≤a,b≤200)

출력

사용된 길이를 소수점 셋째 자리까지 출력한다.

입출력 예

입력

4 3

출력

31.891
출처:tncks0121(박수찬)




제 풀이



1) 풀이

import java.io.PrintStream;
import java.util.Scanner;

public class Main {
 
	Scanner sc = new Scanner(System.in);
	static PrintStream p = System.out;
	double a, b;
	
	public static void main(String[] args) {
		Main m = new Main();
		m.input();
		m.lengthOutput();
	}
	void input(){
		a = sc.nextDouble();
		b = sc.nextDouble();
	}
	 void lengthOutput(){
		 double c = 3.14159*(a+b);
		 double d = Math.sqrt(2)*(a+b);
		
		 p.printf("%.3f", c+d);
	 }  
}





*짧게 코딩하는것도 좋지만 저는 함수와 객체 지향개념을 쓰고 싶어서 이렇게 코딩 했습니다.



지난 글에서 호도법, 삼각함수 공부를 했었기 때문에 수식은 어렵지 않았습니다. 그런데

소수점 값이 길어지고 그 값들이 더해지는 과정에서 변수 float 과 double 의 차이로

결과 값이 다르게 나오는 경우도 있어서 그 점이 힘들었네요.

그 부분 때문에 다소 시간이 걸렸던 문제였습니다.


원의 반지름을 알고 있으면 원주를 구하는건

 입니다.

그런데 문제에서는 원주 길이의 반 180도만 원하기 때문에

입니다.

그리고 한 원안에 있는 직선은 피타 고라스 정리를 이용해서

 로 반지름 a 인 원에 있는 직선을 구 할 수 있습니다.


파이 값은 문제에서 3.14159 라고 명시해 준 값으로 푸셔야 합니다. 소수점 값이 길어지고

그값들이 더해지는 과정에서 정해진 값과 달라질 수 있습니다.







힌트 개념




그림에서 

곡선의 길이는 큰 원과 작은 원의 반지름의 길이가 a , b 이니 두 원의 원주의 반을 더해 주면 곡선의 길이를 구할 수 있습니다.


직선의 길이는 직각  한 변의 길이가 a 와 b 인 직각이등변 삼각형 이어서 


 가 됩니다.( 피타고라스 정리 참조



+ Recent posts