콘텐츠로 건너뛰기
» Posts » [C#]백준 1002번 ‘터렛’ 문제 풀기

[C#]백준 1002번 ‘터렛’ 문제 풀기

C#을 주로 쓰다보니 기본기를 쌓을겸 백준 문제를 풀기 시작했다.

각자의 좌표가 있고 적까지의 거리가 있으므로 위치의 수를 구하면 된다.

<출처 : https://blog.naver.com/honeyeah/110140815554>

 

좌표를 입력받고 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#의 기초부터 착실히 다져나갈 예정
업무에서 쓸때는 몰랐는데 막상 또 알고리즘을 풀때 사용하려고 하니 갑자기 어렵게 느껴지는..