문제 개요
직선의 방정식이 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)로 매우 효율적입니다.