본문 바로가기
BOJ

백준(BOJ) 11758 CCW(Python)

by juLeena 2022. 7. 9.

문제 내용

 

그냥 수학 문제다.

P1, P2, P3에 대해 직선 P1P2의 방정식을 구하고, 거기에 x3를 대입해 구한 y값과 y3을 비교하면 끝이다.

P3에서 P2를 중심으로 회전하되, 반직선 P2P1에 도달할 수 있는 가장 가까운 방식으로 회전해야 하기 때문이다.

y값이 y3보다 크면 시계 방향, 작으면 반시계 방향, 같으면 일직선이다.

그림을 그려 표현하면 쉽지만, 귀찮기 때문에 생략하도록 하겠다.

 

코드는 다음과 같다.

 

x1,y1=map(int,input().split())
x2,y2=map(int,input().split())
x3,y3=map(int,input().split())
a=(x3-x2)*(y2-y1)
b=(y3-y2)*(x2-x1)
if a>b:
    print(-1)
elif a<b:
    print(1)
else:
    print(0)

 

처음에는 일차함수의 a, b값을 구해서 문제를 풀려고 했는데, 나눗셈이 들어가서 실수 영역으로 빠져버리니까 오차가 발생했는지 계속 틀렸다.

그래서 결국 나눗셈 부분을 넘겨서 문제를 풀었다.