BOJ

백준(BOJ) 11758 CCW(Python)

juLeena 2022. 7. 9. 18:14

문제 내용

 

그냥 수학 문제다.

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값을 구해서 문제를 풀려고 했는데, 나눗셈이 들어가서 실수 영역으로 빠져버리니까 오차가 발생했는지 계속 틀렸다.

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