궤도

[EPPER] 14회 6번 본문

💻 현생/⛓ 알고리즘

[EPPER] 14회 6번

영이오 2020. 10. 9. 20:47

문제

 


풀이

 

난 이렇게 도형이 나오고 소수점이 나오는 문제에 약하다. 진짜 약하단 뜻은 아니고, 그냥 하기 싫다는 뜻이다. 입력은 다음과 같다.

 

1. x1==0

2. y1==0

3. x1!=0 && y1!=0

 

그리고 아주 특별한 경우가 아니라면 저 커다란 삼각형은 삼각형 하나와 사각형 하나로 잘릴 것이다. 분명히 이상하게 생겼을 사각형의 넓이를 구하는건 의미없는 뻘짓일테니 삼각형의 넓이를 구하자. 대충 그림을 그려보면 알겠지만 1번의 경우엔 s1이 삼각형이고, 2번의 경우엔 s2가 삼각형이다. 대충 연필로 끄적이면서 식세우고 코드로 작성하자. 설마 x+y = 250이라는걸 모르는 사람은 없겠지?

 

3번의 경우라면 어떻게 해야할까? 이것도 대충 선분을 몇 개 그어보면 알 수 있다. x1이 125보다 크면 s1이 삼각형이고, 그렇지 않은 경우엔 s2가 삼각형이라는 것이다. 똑같이 연필로 대충 식세우고 코드로 작성하자.


소스코드

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int x1, y1;
	double temp, x2, y2;

	scanf("%d %d", &x1, &y1);
	if (x1 == 0) { //s1이 삼각형
		temp = 250.00 - y1;
		x2 = 250 * 125 / temp;
		y2 = 250.00 - x2;
	}
	else if (y1 == 0) { //s2가 삼각형
		temp = 250.00 - x1;
		y2 = 250 * 125 / temp;
		x2 = 250.00 - y2;
	}
	else {
		if (x1 > 125) { //s1이 삼각형
			x2 = 0;
			y2 = 250.00 - 250.00 * 125 / x1;
		}
		else { //s2가 삼각형
			y2 = 0;
			x2 = 250.00 - 250.00 * 125 / y1;
		}
	}
	printf("%.2f %.2f", x2, y2);
}
Comments