문제 링크: https://www.acmicpc.net/problem/1002
백준 기하 1 6단계 - 1002번 터렛을 풀어보았다.
풀이: 좌표와 거리를 받아, 두 원의 교차점의 수를 출력한다.
C++
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int t;
cin>>t;
while(t!=0)
{
int count=0;
int x1,y1,r1,x2,y2,r2;
cin>>x1>>y1>>r1>>x2>>y2>>r2;
double dis=sqrt(pow(x1-x2,2)+pow((y1-y2),2));
int rsum=r1+r2;
int rsub=(r1>r2)?r1-r2:r2-r1;
if(dis!=0) //
{
if(rsum==dis) count++;
else if (rsub==dis) count++;
else if (rsum<dis) count+=0;
else if (dis<rsub) count+=0;
else count+=2;
}
else
{
if(r1==r2)
{
cout<<"-1\n";
t--;
continue;
}
}
cout<<count<<"\n";
t--;
}
}
Python
t=int(input())
for i in range(t):
x1,y1,r1,x2,y2,r2=map(int,input().split())
dis=((x1-x2)**2+(y1-y2)**2)**0.5
rsum=r1+r2
rsub= r1-r2 if r1>r2 else r2-r1
cnt=0
if dis!=0:
if rsum==dis: cnt+=1
elif rsub==dis: cnt+=1
elif rsum<dis or dis<rsub: cnt+=0
else: cnt+=2
else:
if r1==r2: # 무한대
print(-1)
continue
print(cnt)
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
배수와 약수 풀이 (0) | 2023.01.09 |
---|---|
어린 왕자 풀이 (0) | 2023.01.09 |
택시 기하학 풀이 (0) | 2023.01.09 |
참외밭 풀이 (0) | 2023.01.09 |
직각삼각형 풀이 (0) | 2023.01.09 |