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

문제이해
이 문제를 처음 읽고서는 이해가 잘 되지 않았다.
이해가 되지 않아 직접 그림을 그려보니 이 문제는 두 원의 교차점의 개수를 구하는 문제였다.
수학 안푼지 오래됐는데...
수학 개념을 검색해 보고 풀어봤다.
※ 두 원의 교차점의 개수
- 두 원이 아예 같은 경우 (무한대 개)
- x,y 좌표와 반지름의 길이가 같다.
- 외부에서 만나지 않는 경우 (0개)
- 두 원의 반지름을 더해도 중심 거리보다 작음
- 내부에서 만나지 않는경우 (0개)
- d < ∣ r1−r2 ∣ : 하나의 원이 다른 원 안에 있지만, 닿지 않음
- 외접하는 경우 (1개)
- 반지름을 더한 값이 중심 거리와 같음
- 내접하는 경우 (1개)
- 하나의 원이 다른 원 안에 있지만 접함
- 두 점에서 만나는 경우 (2개)
- 나머지 경우


정답
import math
T = int(input())
for _ in range(T):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
d = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
if (x1, y1) == (x2, y2) and r1 == r2:
print(-1)
elif d > (r1 + r2) or d < abs(r1 - r2):
print(0)
elif d == r1 + r2 or d == abs(r1 - r2):
print(1)
else:
print(2)
위의 두 원의 교차점 구하는 조건을 따라 식을 완성했다.
어렸을 때부터 도형에 약했는데.. 도형문제라니!!
P.S. 문제에 조규현은 내가 아는 조규현인가..?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
'알고리즘문제풀이' 카테고리의 다른 글
| [백준/Python] 2579번 계단 오르기 (0) | 2025.02.14 |
|---|---|
| [프로그래머스/Python] 실패율 (0) | 2025.02.13 |
| [백준/Python] 2805번 나무 자르기 (0) | 2025.02.11 |
| [백준/Python] 18110번 solved.ac (0) | 2025.02.10 |
| [백준/Python] 10610번 30 (0) | 2025.02.07 |
