-
백준 2022번 : 사다리 (C 언어)c c++ 언어 공부 2023. 5. 9. 07:36
https://www.acmicpc.net/problem/2022
2022번: 사다리
첫째 줄에 차례대로 x, y, c에 해당하는 양의 실수 세 개가 입력된다. 수는 소수점 여섯째 자리까지 주어질 수 있으며, 3,000,000,000보다 작거나 같다.
www.acmicpc.net
Code:
1234567891011121314151617181920212223242526272829303132333435#include <stdio.h>#include <math.h>#define min(a,b) (a>b)?b:adouble x, y, c;double check(double w){double h1 = sqrt(x * x - w * w);double h2 = sqrt(y * y - w * w);double cnt= ((h1 * h2) / (h1 + h2));return cnt;}int main(){scanf("%lf %lf %lf", &x, &y, &c);double value = 0;double low = 0, high = min(x, y);//high에 min을 쓰는 이유는 두 사다리다 만족해야 하므로 작은것을 선택while (high - low > 0.000001) //이분탐색을 이용{double mid = (low + high) / 2.0; //중간값을 만들어줌if (check(mid) >= c) //check함수에 넣어 높이를 체크{value = mid; //성립시 value에 min를 넣어주고low = mid; //이제 최소한 low는 mid보다 큰 것을 알 수 있다.}else{high = mid; //성립하지 않을 시 high는 mid보다 작음을 알 수 있다.}}printf("%0.3lf", value);}cs 문제풀이:
내부 삼각형과 외부 삼각형의 비를 이용해서 check 함수를 만들었다. 그 후 구해야 하는 것은 h1, h2를 구해야 하고
성립하는 지는 이분 탐색으로 확인하였다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1312번 : 소수 (C 언어) (0) 2023.05.10 백준 2693번 : N번째 큰 수 (C 언어) (0) 2023.05.10 백준 10833번 : 사과 (C 언어) (0) 2023.05.09 백준 1977번 : 완전제곱수 (C 언어) (0) 2023.05.08 백준 9656번 : 돌 게임2 (C 언어) (0) 2023.05.08