[백준] 11664번 선분과 점 ★

거북이·2023년 10월 11일
0

백준[골드5]

목록 보기
77/82
post-thumbnail

💡문제접근

  • 선분 AB와 점 C가 존재한다. 선분 AC와 선분 BC의 길이를 비교했을 때 만약 선분 AC의 길이가 더 길면 점 C에서 선분 AB에 선을 그었을 때 만나는 점이 점 B에 더 가깝게 형성이 되고 선분 BC의 길이가 더 길면 점 C에서 선분 AB에 선을 그었을 때 만나는 점이 점 A에 더 가깝게 형성이 된다. 이를 이용해서 문제를 해결했다.

💡코드(메모리 : 33372KB, 시간 : 44ms)

import math
import sys
input = sys.stdin.readline
INF = int(1e9)

Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz = map(int, input().strip().split())
ans = INF

while True:
    mid_x, mid_y, mid_z = (Ax + Bx) / 2, (Ay + By) / 2, (Az + Bz) / 2
    A = math.sqrt(abs(Ax - Bx) ** 2 + abs(Ay - By) ** 2 + abs(Az - Bz) ** 2)    # 선분 AB의 길이
    B = math.sqrt(abs(Ax - Cx) ** 2 + abs(Ay - Cy) ** 2 + abs(Az - Cz) ** 2)    # 선분 AC의 길이
    C = math.sqrt(abs(Bx - Cx) ** 2 + abs(By - Cy) ** 2 + abs(Bz - Cz) ** 2)    # 선분 BC의 길이
    H = math.sqrt(abs(Cx - mid_x) ** 2 + abs(Cy - mid_y) ** 2 + abs(Cz - mid_z) ** 2)   # 점 C에서 선분 AB에 수선의 발을 내렸을 때 생기는 점과 점 C 사이의 길이

    if abs(ans - H) <= 1e-6:
        print('%.10f' % ans)
        exit(0)

    if ans > H:
        ans = H

    if B > C:
        Ax, Ay, Az = mid_x, mid_y, mid_z
    else:
        Bx, By, Bz = mid_x, mid_y, mid_z

💡소요시간 : 34m

1개의 댓글

comment-user-thumbnail
2023년 10월 15일

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

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

답글 달기