반응형
[ 문제 ]
백발백준은 무슨 과녁이던 백발백중하여 올림픽 금메달보다 따기 어렵다는 대한민국 양궁 국가대표 타이틀을 가지고 있다. 이런 백발백준이 현재 연마하는 스킬이 있는데...
바로 두 과녁을 한번에 맞추는 스킬이다. 이를 연습하기 위해 두 과녁이 겹치는 부분이 있어 한번에 맞추기가 가능한지 알아보고 싶어졌다.
여러분은 백발백준이 연습하는 과정을 도와주기 위해 원 모양으로 생긴 두 과녁이 겹치는 부분이 존재하는지 확인하는 프로그램을 작성해보자.
[ 코드 ]
1. 내 코드
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
string[] input1 = sr.ReadLine().Split();
double x1 = double.Parse(input1[0]);
double y1 = double.Parse(input1[1]);
double r1 = double.Parse(input1[2]);
string[] input2 = sr.ReadLine().Split();
double x2 = double.Parse(input2[0]);
double y2 = double.Parse(input2[1]);
double r2 = double.Parse(input2[2]);
double distance = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
if (distance < (r1+r2))
{
sw.Write("YES");
}
else
{
sw.Write("NO");
}
sw.Flush();
sw.Close();
sr.Close();
2. 다른 사람 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace no22938try1
{
internal class Program
{
static void Main(string[] args)
{
string[] points1 = Console.ReadLine().Split(' ');
string[] points2 = Console.ReadLine().Split(' ');
ulong x = (ulong)Math.Abs(long.Parse(points1[0]) - long.Parse(points2[0]));
ulong y = (ulong)Math.Abs(long.Parse(points1[1]) - long.Parse(points2[1]));
ulong r = ulong.Parse(points1[2]) + ulong.Parse(points2[2]);
x *= x;
y *= y;
r *= r;
if (r > x + y) Console.WriteLine("YES");
else Console.WriteLine("NO");
}
}
}
[ 추가 ]
두 점 사이의 거리를 구하는 공식 피타고라스의 정리를 이용한 공식이다.
https://mathbang.net/408#gsc.tab=0
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/22938
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 24416번 알고리즘 수업 - 피보나치 수 1 (0) | 2024.04.05 |
---|---|
[C#] 백준 16483번 접시 안의 원 (0) | 2024.04.05 |
[C#] 백준 14264번 정육각형과 삼각형 (0) | 2024.04.04 |
[C#] 백준 7510번 고급 수학 (0) | 2024.04.04 |
[C#] 백준 3034번 앵그리 창영 (0) | 2024.04.03 |