20151023


*이 문제는 삼각형의 비 개념을 알고 있어야 합니다.
*이문제는 dovelet 에 있는 알고리즘 문제입니다.




spot(special judge) spot of light 알고리즘 








프로그램 명: spot(special judge)

제한시간: 1 초


받침대에 있는 프로젝터가 벽 쪽으로 둥글게 빛을 쏜다.

d 가 프로젝터와 벽까지의 수평 거리이고 , r 은 빛이 있는 영역의 반지름이고 A 는 수평각이다. (아래 그림 참조)

우리는 반지름을 p 퍼센트 변화하기를 원한다.

예를 들어, p 가 -25 이면 r 을 25 퍼센트 줄이기를 원한다는 것을 의미한다. 만약 p 가 50 이면 반지름을 50 퍼센트 증가한다는 것이다.

각 A 가 변함이 없다고 가정할 때 얼마나 멀리 그리고 어떤 방항으로 프로젝트를 움직여야 하는지를 알아내어야 한다.

입력

입력은 두 줄로 이루어진다.

  • 한 줄에는 d 가 1 과 40 사이의 실수가 주어지고 ,
  • 다음 줄에는 p 가 -95 와 300 사이의 실수로 주어진다.

출력

프로젝트 위치의 변화를 나타내는 수를 소수 이하 세자리(4 번째 자리에서 반올림) 까지 출력한다.

양수이면 프로젝트를 벽쪽으로 오른쪽으로 가깝게 하는 것을 음수이면 반대 편으로 즉 벽에서 더 멀어지는 것을 의미한다.

입출력 예

입력

28.5
-25.0

출력

7.125

입력

28.5
50.0

출력

-14.250
출처:cs.umd.edu high school programming contest






제 풀이



1) 풀이

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

public class Main {
 
	Scanner sc = new Scanner(System.in);
	static PrintStream p = System.out;
	float d, pRate;
	
	public static void main(String[] args) {
		Main m = new Main();
		m.input();
		m.rateOutput();
		
	}
	void input(){
		d = sc.nextFloat();
		pRate = sc.nextFloat();
	}
	void rateOutput(){
	        float temp = (float)(d*pRate/100);
	        p.printf("%.3f" ,temp*-1);
	    }
}





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



아직까진 어려운 문제는 아니지만 기본적인 수학적인 개념을 알아야 풀 것 같네요.


문제를 먼저 파악해 보면 빛의 수평각 A 는 변함이 없고 주어진 비율 p 만큼 r 이 변하려면


d 는 얼마나 변해야 하냐는 문제 입니다. 수평각 A는 언제나 그대로 면서 r 이 일정 비율만큼


변한다는것은 d그 비율만큼 변한다는 거죠 삼각형을 이루는 3 각의 각도는 언제나 같으니깐요



코딩의 내용은 입력 받은 d 값에 p(비율) 값을 곱해주고
(이때 % 비율로 만들어 주기 위해 100을 나누어 주었습니다.)

그리고 값이 늘어 나면 멀어지는데 값을 음수로 표현 해야하기 때문에 -1 을 곱했고

%.3f 소수점 3번째까지 반올림해 나타내주는 출력문을 사용하면 됩니다.

 




+ Recent posts