문제 링크
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <iostream>
#include <math.h>
using namespace std;
int main() {
long long T=0,C=0,sr=0,br=0;
double A=0;
long long x1=0,x2=0,y1=0,y2=0,r1=0,r2=0;
cin>>T;
while(T!=0){
cin>>x1>>y1>>r1>>x2>>y2>>r2;
A=sqrt(abs(x1-x2)*abs(x1-x2)+abs(y1-y2)*abs(y1-y2));
C=r1+r2;
sr = r1>r2?r2:r1;
br = r1<r2?r2:r1;
if(A>C)cout<<0<<'\n';
else if(A==C)cout<<1<<'\n';
else if(C>A){
if(r1==r2&&x1==x2&&y1==y2)cout<<-1<<'\n';
else if(A+sr>br)cout<<2<<'\n';
else if(A+sr==br)cout<<1<<'\n';
else if(A+sr<br)cout<<0<<'\n';
}
T--;
}
return 0;
}
|
cs |
두원과의 관계를 잘 생각하면 쉽게 풀리는 문제이다.
처음 두원이 완전 떨어져있는 경우를 첫번째로 원의 두점사이의 거리와 각 원의 반지름 값의 합을 따져 계산하고
이후 두 점이 겹치는 경우는 두 원중 짧은 반지름과 두 점 사이의 거리의 합과 긴 반지름 값의 합을 따져 계산하였다.
여기서 주의할 점
sqrt(n)함수는 n의 제곱근값을 반환하기 때문에 값을 받는 변수형을 double형으로 선언해주어야 한다.
이것때메 알고리즘 잘못 된 줄 알고 2시간 고민했다...
#include <math.h>
sqrt(n)은 n의 제곱근을 반환한다.
abs(n)는 n의 절대값을 반환한다.
pow(n,m)은 n의 m제곱을 반환한다.
'Algorithm > 문제 풀이 (Problem Solving)' 카테고리의 다른 글
[C++] 백준 2309번 일곱난장이 문제풀이 (0) | 2019.02.14 |
---|---|
[C++] 백준 1181번 단어정렬 문제풀이 (0) | 2019.01.24 |
[C++] 코드그라운드 버스타기 문제풀이 (0) | 2019.01.10 |
[C++] 코드그라운드 숫자골라내기 문제풀이 (0) | 2018.09.19 |
[C++] 프로그래머스 가운데 글자 가져오기 문제풀이 (0) | 2018.09.02 |
댓글