접근

수학 문제를 푸는 느낌이었는데 마지막엔 그것이 아니었다. 숫자를 주고 풀어라 하면 너무 쉽게 답을 구할 수 있지만 이를 코딩해라 라고 하니 제대로 구현을 못했다.

정답률이 낮은데에는 이유가 있는 법. 굉장히 오래 해메다가 문제를 해결하였다.

이전 문제에서 사용한 CCW를 체크하는 알고리즘을 이용하여 서로 교차하는지 확인할 수 있었다.

CCW 알고리즘: 2021.05.06 - [코딩/백준 (Python)] - 백준 11758번: CCW (Python)

 

백준 11758번: CCW (Python)

접근 마치 수학문제를 푸는 듯한 느낌을 받았다. 가장 먼저 주어지는 두개의 점이 이루는 직선의 식을 구한 후, 세번째 점이 그 직선보다 위에 있는지, 아래에 있는지, 혹은 직선 위에 있는지 구

ca.ramel.be

코드

import sys

x1, y1, x2, y2 = map(int, sys.stdin.readline().split())
x3, y3, x4, y4 = map(int, sys.stdin.readline().split())


def ccw(x1, y1, x2, y2, x3, y3):
    tmp = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)
    if tmp > 0:
        return 1
    elif tmp < 0:
        return -1
    else:
        return 0


ans = 0
if ccw(x1, y1, x2, y2, x3, y3) * ccw(x1, y1, x2, y2, x4, y4) < 0 and ccw(x3, y3, x4, y4, x1, y1) * ccw(x3, y3, x4, y4, x2, y2) < 0:
    ans = 1
print(ans)

더 생각해 볼 것?

...

코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기