본문 바로가기

PS/백준

[BOJ] 백준 1002 터렛 (Swift)

반응형

문제

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

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

풀이

조규현의 좌표에서 류재명과의 거리가 주어졌을 때, 류재명이 있을 수 있는 좌표는 어디일까요?

연습장 (3)

류재명은 이 보라색 테두리에 모두 위치해(무한대) 있을 수 있습니다.

그렇다면 조규현과 백승환의 좌표가 모두 주어진 경우를 확인해 봅시다.

이러한 경우에는 류재명이 2군데로 체크된 곳에 위치해 있을 수 있습니다.

image

아하 그렇다면 두 원이 서로 다른 두 점에서 만난다면? 류재명이 있을 수 있는 좌표는 2개가 되겠군요.

류재명이 있을 수 있는 좌표가 1개일 때는 어느 경우 일까요?
외접, 내접인 경우입니다.

image

 

 

image

류재명이 있을 수 있는 좌표가 없을 때두 원이 만나지 않는 경우겠네요!

image

 

image

마지막으로 류재명이 있을 수 있는 좌표가 무한대일 때는..?
두 원이 동심원이고, 반지름도 같을 때 입니다.

이제 두 원이 두 점에서 만나는 경우를 구해봅시다.
$r1 - r2 \lt d \lt r1 + r2$ 입니다.
거리(d)는 두 점의 거리이므로 $d = \sqrt{(x1 - x2)^2 + (y1 - y2)^2}$ 입니다.

두 원이 한점에서 만나는 경우외접과 내접이죠?
외접은 $r1 + r2 = d$ 내접은 $r2 - r1 = d$ 입니다.

무한대인 경우는? 동심원이고 반지름이 같을 때이므로
$d = 0 && r1 == r2$일 때입니다

그 외의 경우에는 두 원이 만나지 않는 경우입니다.

소스코드로 작성할 때, 저는 거리(d)에 루트를 씌우지 않고, 전부 제곱을 해준 형태로 구현하였습니다.

소스코드

후기

직접 그려서 확인하면서 어떤 방식으로 접근해야할 지 알게되었습니다.
내접, 외접.. 오랜만에 들어봤는데 공식이 잘 기억이 안나더라구요..😂
덕분에 오랜만에 수학 공식을 확인해봤습니다.. 다시 기억해야지..

반응형