백준(Java)/23년 7월

[Java] 백준 - 17386번: 선분 교차 1

C0MPAS 2023. 7. 20. 15:23

7월 20일(목) - 기하학 (17386번)

 

17386번: 선분 교차 1

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. 세 점이 일직선 위에 있는 경우는 없다.

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

(C언어 풀이 활용)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.StringTokenizer;

public class Main {

    static class point{
        long x;
        long y;
        public point(long x, long y){
            this.x = x;
            this.y = y;
        }
    }

    static int ccw(point a, point b, point c){
        long temp = (a.x * b.y) + (b.x * c.y) + (c.x * a.y);
        temp = temp - (a.y * b.x) - (b.y * c.x) - (c.y * a.x);

        if(temp > 0)
        {
            return 1;
        }
        else if(temp < 0)
        {
            return -1;
        }
        else
        {
            return 0;
        }
    }

    static int cross_or_not(point a, point b, point c, point d){
        int first = ccw(a,b,c) * ccw(a,b,d);
        int second = ccw(c,d,a) * ccw(c,d,b);

        if(first<=0 && second<=0)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        point a = new point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
        point b = new point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));

        st = new StringTokenizer(br.readLine(), " ");
        point c = new point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
        point d = new point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));

        System.out.println(cross_or_not(a,b,c,d));
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ