Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 점 (x, y)가 주어진 직선 위에 있는지 확인하는 방법

문제 개요

직선의 방정식이 y = mx + b 형태로 주어졌다고 가정해 봅시다. 여기서 m은 기울기(slope), b는 y절편(y-intercept)을 의미합니다. 그리고 별도의 좌표점 (x, y)가 하나 주어집니다. 우리가 확인해야 할 것은 이 좌표점이 해당 직선 위에 존재하는지 여부입니다.

예를 들어 입력이 m = 3, b = 5, point = (6, 23)이라면 출력은 True가 됩니다. 주어진 x와 y 값을 직선의 방정식에 대입했을 때 등식이 성립하기 때문입니다. 실제로 3 × 6 + 5 = 23이므로 점 (6, 23)은 이 직선 위에 있습니다.

해결 접근 방법

이 문제는 매우 간단한 수학적 원리로 해결할 수 있습니다. 점이 직선 위에 있다는 것은 그 점의 좌표가 직선의 방정식을 만족한다는 의미이기 때문입니다. 따라서 다음 단계를 따릅니다.

  • 점의 y 값이 (m × 점의 x 값) + b와 같은지 비교합니다.
  • 두 값이 같으면 True를 반환합니다.
  • 같지 않으면 False를 반환합니다.

예제 코드

아래 파이썬 구현을 통해 더 잘 이해할 수 있습니다.

def solve(m, b, point):
    if point[1] == (m * point[0]) + b:
        return True
    return False

m = 3
b = 5
point = (6, 23)
print(solve(m, b, point))

입력

m = 3, b = 5, point = (6, 23)

출력

True

추가 팁: 부동소수점 오차 처리

실수(float) 좌표를 다룰 때는 부동소수점 연산 오차로 인해 정확한 등호(==) 비교가 실패할 수 있습니다. 이 경우 math.isclose() 함수를 사용하면 안전하게 비교할 수 있습니다.

import math

def solve(m, b, point):
    return math.isclose(point[1], m * point[0] + b)

이처럼 점이 직선 위에 있는지 확인하는 문제는 직선의 방정식에 좌표를 대입하여 등식 성립 여부만 판단하면 되므로, 시간 복잡도는 O(1)로 매우 효율적입니다.