C# 백준1002번 터렛, 원의 내접, 외접
2022. 1. 3. 17:20ㆍ코딩테스트 문제 풀이/[백준] 기본 수학2
728x90
반응형
코드 :
using System;
namespace _11
{
class Program
{
static void Main(string[] args)
{
int T = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < T; i++)
{
string input = Console.ReadLine();
string[] inputdata = input.Split(' ');
int x1, y1, r1, x2, y2, r2;
x1 = Convert.ToInt32(inputdata[0].ToString());
y1 = Convert.ToInt32(inputdata[1].ToString());
r1 = Convert.ToInt32(inputdata[2].ToString());
x2 = Convert.ToInt32(inputdata[3].ToString());
y2 = Convert.ToInt32(inputdata[4].ToString());
r2 = Convert.ToInt32(inputdata[5].ToString());
//두 좌표사이의 거리의 제곱
int d = ((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2));
//두 반지름의 합의 제곱
int pR = (r1 + r2) * (r1 + r2);
int mR = (r1 - r2) * (r1 - r2);
if (d == pR || d == mR)
{
if (x1 == x2 && y1 == y2 && r1 == r2)
Console.WriteLine("-1");
else
Console.WriteLine('1');
}
//좌표가 다른데 반지름의 합이 더 큰경우
else if (mR < d && d < pR)
Console.WriteLine('2');
else if (pR < d || mR > d)
Console.WriteLine('0');
}
}
}
}
문제를 그림으로 그려보면 원의 내접, 외접과 관련된 문제임을 알 수 있다.
인터넷에서 내접, 외접등을 공부하면 코드를 쉽게 구현할 수 있다.
내 코드의 특징은 두 좌표 사이의 거리를 구할때 마지막에 제곱근을 구하는데 제곱근을 구하는 과정에서 값이 소실됨을 우려하여 제곱근을 구하지 않고 제곱상태에서 값을 구했다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 기본 수학2' 카테고리의 다른 글
C# 백준 3053번 택시 기하학, 소수점 이하 6자리 (0) | 2022.01.03 |
---|---|
C# 백준 4153번 직각삼각형 (0) | 2022.01.03 |
C# 백준 3009번 네 번째 점 (0) | 2022.01.03 |
C# 백준 1085번 직사각형에서 탈출 (0) | 2022.01.03 |
C# 백준 9020번 골드바흐의 추측 (0) | 2022.01.03 |