백준 2022 '사다리'

Bonwoong Ku·2023년 10월 12일
0

알고리즘 문제풀이

목록 보기
56/110

아이디어

  • 위 그림에서 a=x2m2a = \sqrt{x^2-m^2}, b=y2m2b = \sqrt{y^2-m^2}라 하면
    • mca+mcb=mm\frac{c}{a} + m\frac{c}{b} = m
    • 1a+1b=1c\frac{1}{a} + \frac{1}{b} = \frac{1}{c}
    • c=11a+1b=aba+bc = \frac{1}{\frac{1}{a} + \frac{1}{b}} = \frac{ab}{a+b}
  • cc가 커지면 mm은 작아진다.
  • 이진 탐색으로 mm을 선택하여, 그때 계산한 cc를 입력받은 cc와 비교하여 mm을 줄일 지 키울 지의 여부를 결정한다.

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tk = null;

	static double x, y, X, Y, c0;
	
	public static void main(String[] args) throws Exception {
		tk = new StringTokenizer(rd.readLine());
		x = Double.parseDouble(tk.nextToken());
		y = Double.parseDouble(tk.nextToken());
		c0 = Double.parseDouble(tk.nextToken());
		
		X = x*x;
		Y = y*y;
		
		double l = 0.0;
		double r = Math.min(x, y);
		while (r - l > 10e-4) {
			double m = (l + r) * 0.5;
			double M = m*m;
			double a = Math.sqrt(X - M);
			double b = Math.sqrt(Y - M);
			double c = a * b / (a + b);
			if (c > c0) l = m;
			else r = m;
		}
		
		System.out.println(l);
	}
}

메모리 및 시간

  • 메모리: 14292 KB
  • 시간: 124 ms

리뷰

  • 이진 탐색을 활용한 수치해석 문제
profile
유사 개발자

1개의 댓글

comment-user-thumbnail
2023년 10월 15일

안녕하세요 글 잘 보고 있어요..!
제가 요즘 많이 고심하는데도 모르겠어서
여쭤보고 싶은 공업수학 문제가 있는데
혹시 답변 해주실 수 있으실까요..?
곤란 하시다면 답변 안 해주셔도 괜찮아요
문제는 이거예요…!

“분리가능 상미분 방정식은 양형태 상미분 방정식의 일부이고, 완전 상미분 방정식은 음형태 상미분 방정식 일부라고 볼 수 있다.
양형태의 상미분 방정식 중 분리가능한 상미분 방정식을 제외하고 남은 상미분 방정식들은 어떤 것들이 있는지 (즉, 분리가능하지 않은 상미분 방정식들), 음형태의 상미분 방정식 중 완전 상미분 방정식을 제외하고 남은 상미분 방정식들은 어떤 것들이 있는지 (즉, 완전하지 않은 상미분 방정식들) 쓰시오.
즉.
양형태의 상미분 방정식의 전체 집합을 W.
음형태의 상미분 방정식의 전체 집합을 U,
분리가능한 상미분 방정식의 전체 집합을 A,
완전 상미분 방정식의 전체 집합을 B
라고 할 때
집합 A^c ᑎ W 과 집합 B^c ᑎ U 에 대해 기술하는 문제이다. 그 집합에 해당하는 미분 방 정식의 예를 몇 개 구하고 그들의 공통된 특징을 기술하는 방법을 써도 좋고, 아니면 이 집 합에 속하는 방정식들의 특징을 바로 기술하여도 좋다.“

답글 달기