[BOJ] 11758. CCW

Jimeaning·2023년 11월 7일
0

코딩테스트

목록 보기
127/143

Python3

문제

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

키워드

  • 기하학

문제 풀이

문제 요구사항

2차원 좌표 평면 위에 있는 점 3개 P1, P2, P3를 순서대로 이은 선분이 어떤 방향을 이루고 있는지 구하는 프로그램
P1, P2, P3를 순서대로 이은 선분이
반시계 방향을 나타내면 1,
시계 방향이면 -1,
일직선이면 0
을 출력

변수 및 함수 설명

  • arr: (x1, y1), (x2, y2), (x3, y3)를 넣는 리스트
    (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000)
    P1, P2, P3의 좌표는 서로 다르다.

풀이

(입력 및 선언)

  • arr에 x, y 값을 3번 입력받는다

(ccw 함수)

  • x1 * y2 + x2 * y3 + x3 * y1 - (x2 * y1 + x3 * y2 + x1 * y3)를 계산해서 리턴한다.
  • 양수면 1, 음수면 -1, 0이면 0을 출력한다

최종 코드

arr = []

def ccw(p1, p2, p3):
    return p1[0] * p2[1] + p2[0] * p3[1] + p3[0] * p1[1] - (p2[0] * p1[1] + p3[0] * p2[1] + p1[0] * p3[1])

for _ in range(3):
    arr.append(list(map(int, input().split())))

if ccw(arr[0], arr[1], arr[2]) > 0:
    print(1)
elif ccw(arr[0], arr[1], arr[2]) < 0:
    print(-1)
else:
    print(0)

피드백

ccw 알고리즘을 배우게 되었다,,

profile
I mean

0개의 댓글