티스토리 뷰

ps

BOJ 20149(선분 교차 3)풀이

KWG07(joseph0528) 2021. 8. 14. 23:30

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

 

20149번: 선분 교차 3

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다.

www.acmicpc.net

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

 

17387번: 선분 교차 2

첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다.

www.acmicpc.net

선분 교차 3은 위 문제에서 교차하는 점의 위치를 출력하는 게 더 추가된 문제이다.

그렇기 때문에 선분 교차 2를 먼저 풀고 오는걸 추천한다.

전체 코드에 대한 설명이 아닌 점위치를 찾는 코드만 설명하겠다. 두 직선이기 때문에 중2 때 배우는 일차함수를 이용해서 두 선분의 교점을 찾으면 된다. y=ax+b라는 일차함수와 y=cx+d라는 일차함수가 있으면 두 일차함수의 교점은 ax+b=cx+d가 되고 이항 시키면 ax-cx=d-b 이렇게 된다 이런 방식으로 구해서 풀면 되는데

이때 x=3,y=3 이런 입력일 들어올 경우 따로 처리해주면 된다. 이렇게 한다고 해서 아직 끝난 건 아닌데

 출력을 보면 두 선분이 한 점에서 교차할 경우 출력이기 때문에 어떤 한점이 다른 선분의 점과 만날 때 나머지 두 점이 다른 선분과 겹치지 않으면 된다. 이거는 선분 교차 2 코드를 다시 사용하면 간단하게 풀 수 있다. 이렇게 조건들을 추가해주면 끝이다.

'ps' 카테고리의 다른 글

BOJ 17274(카드 공장 (Large))풀이  (0) 2021.08.15
BOJ 2243(사탕상자)풀이  (0) 2021.08.15
BOJ 6164(Hotel)풀이  (0) 2021.08.07
BOJ 1126(같은 탑)풀이  (0) 2021.08.05
BOJ 22348(헬기 착륙장)풀이  (1) 2021.08.01
댓글