C#을 주로 쓰다보니 기본기를 쌓을겸 백준 문제를 풀기 시작했다.
각자의 좌표가 있고 적까지의 거리가 있으므로 위치의 수를 구하면 된다.
좌표를 입력받고 x1과 x2의 거리(distance)를 r값과 비교할 수 있도록 구함
x1과 x2가 완전히 동일한 원일때 -1,
교점이 1개 일때,
교점이 0개 일때,
교점이 2개 일때를 구하면 된다.
class Turret { static void Main(String[] args) { int testcase = int.Parse(Console.ReadLine()); while (testcase > 0) { // 입력받을 좌표 int[] coord = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); // 두점사이 거리 int a = coord[3] - coord[0]; int b = coord[4] - coord[1]; double distance = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)); // r1, r2 int r1 = coord[2]; int r2 = coord[5]; if (coord[0] == coord[3] && coord[1] == coord[4] && r1==r2) Console.WriteLine(-1); else if (Math.Abs(r1 + r2) == distance || (Math.Abs(r1 - r2) == distance)) Console.WriteLine(1); else if (Math.Abs(r1 + r2) < distance || (Math.Abs(r1 - r2) > distance)) Console.WriteLine(0); else Console.WriteLine(2); testcase -= 1; } } }
헤헷.. 한번에 성공은 못했음 ㅎㅎ
C#의 기초부터 착실히 다져나갈 예정
업무에서 쓸때는 몰랐는데 막상 또 알고리즘을 풀때 사용하려고 하니 갑자기 어렵게 느껴지는..