반응형
문제
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
풀이
점 3개를 가지고 방향성을 알 수 있는 CCW라는 알고리즘이 있습니다.
공식으로는
direction=(x1×y2+x2×y3+x3×y1)−(y1×x2+y2×x3+y3×x1)
이 direction이 양수이면 반시계방향, 음수이면 시계방향 0이면 직선입니다.
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var x: [Int] = [] | |
var y: [Int] = [] | |
for _ in 0..<3 { | |
let input = readLine()!.split(separator: " ").map { Int($0)! } | |
x.append(input[0]) | |
y.append(input[1]) | |
} | |
let area = (x[0] * y[1] + x[1] * y[2] + x[2] * y[0]) - (y[0] * x[1] + y[1] * x[2] + y[2] * x[0]) | |
print(area == 0 ? 0 : area > 0 ? 1 : -1) |
후기
이 글을 참고하여 풀이하였습니다.
수학.. 어렵다..
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 17386 선분 교차 1 (Swift) (0) | 2023.05.24 |
---|---|
[BOJ] 백준 25308 방사형 그래프 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 2166 다각형의 면적 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 2213 트리의 독립집합 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 2533 사회망 서비스(SNS) (Swift) (0) | 2023.05.23 |