알고리즘 문제 해결/BOJ

[기하학] BOJ 11758 CCW

jmkimmessi 2022. 8. 5. 00:00
반응형

https://www.acmicpc.net/problem/11758

 

11758번: CCW

첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.

www.acmicpc.net

 

문제 해결 알고리즘

 

ccw알고리즘을 이용해 푸는 문제

 

입력된 점들을 순서대로 이은 선분 두개의 좌표를 외적해서 값이  

음수이면 -1 양수이면 1 일직선이면 0을 출력한다. 

 

소스 코드

 

#include <bits/stdc++.h>
using namespace std;



int main(){
    int x_1, y_1, x_2, y_2, x_3, y_3;
    cin >> x_1 >> y_1 >> x_2 >> y_2 >> x_3 >> y_3;

    int ccw = (x_2 - x_1)*(y_3 - y_1) - (x_3 - x_1)*(y_2 - y_1);

    if(ccw > 0) cout << 1;
    else if(ccw == 0) cout << 0;
    else if(ccw < 0) cout << -1;
}
반응형