링크 : https://www.acmicpc.net/problem/1002
테스트 케이스의 분류를 잘했어야 하는 문제였다.
라는 생각을 시작으로 접근하였다.
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int testcase;
cin >> testcase;
int x1, y1, r1, x2, y2 ,r2;
for (int i = 0; i < testcase; i++) {
cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
double len = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
if (r1 < r2)
swap(r1, r2);
if (len == 0) {
if (r1 == r2)
cout << -1 << endl;
else
cout << 0 << endl;
}
else if (len > abs(r1 - r2) && len < r1 + r2)
cout << 2 << endl;
else if (len == r1 + r2|| len == abs(r1-r2))
cout << 1 << endl;
else
cout << 0 << endl;
}
return 0;
}
sqrt와 pow함수를 이용하여 원의 중심들 사이의 거리를 구하였다.
1, 2, 3번은 보자마자 확인했지만 4, 5, 6은 뒤늦게서야 오답이 뜨고 깨달았다. 특히 6번은 수식화하는데 오래 걸렸다. 결국 수학이 발목을 붙잡는다. 하지만 그럴수록 더욱 노력해야한다는 것도 알고 있고 문제를 풀면서 느꼈다.
케이스 분류를 더욱 신경 써야겠다는 점과 문제를 풀기 전에 어떤 유형의 문제인지 파악하고 유형을 파고든다는 생각으로 알고리즘을 학습해야겠다는 생각을 했다.