20151023
*이 문제는 삼각형의 비 개념을 알고 있어야 합니다.
*이문제는 dovelet 에 있는 알고리즘 문제입니다.
spot(special judge) spot of light 알고리즘
프로그램 명: spot(special judge)
받침대에 있는 프로젝터가 벽 쪽으로 둥글게 빛을 쏜다.
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번째까지 반올림해 나타내주는 출력문을 사용하면 됩니다.
'알고리즘(dovelet 문제풀이) > 1층' 카테고리의 다른 글
X 길이 구하기/x_length(X 길이 구하기 알고리즘) (0) | 2015.10.24 |
---|---|
정다각형 면적/rpoly(정다각형 면적 알고리즘) (1) | 2015.10.23 |
angle/open(angle 알고리즘) (0) | 2015.10.22 |
maxandmin/maxandmin(maxandmin 알고리즘) (0) | 2015.10.22 |
기울기/slant(기울기 알고리즘) (0) | 2015.10.22 |