1 분 소요

1. 문제

[Bronze III] 백발백준하는 명사수 - 22938

문제 링크

성능 요약

메모리: 32952 KB, 시간: 68 ms

분류

기하학(geometry), 수학(math), 피타고라스 정리(pythagoras)

문제 설명

백발백준은 무슨 과녁이던 백발백중하여 올림픽 금메달보다 따기 어렵다는 대한민국 양궁 국가대표 타이틀을 가지고 있다. 이런 백발백준이 현재 연마하는 스킬이 있는데...

바로 두 과녁을 한번에 맞추는 스킬이다. 이를 연습하기 위해 두 과녁이 겹치는 부분이 있어 한번에 맞추기가 가능한지 알아보고 싶어졌다.

여러분은 백발백준이 연습하는 과정을 도와주기 위해 원 모양으로 생긴 두 과녁이 겹치는 부분이 존재하는지 확인하는 프로그램을 작성해보자.

입력

첫번째 줄에는 첫번째 과녁의 중심 X1, Y1와 반지름 R1이 주어진다.

두번째 줄에는 두번째 과녁의 중심 X2, Y2와 반지름 R2가 주어진다.

X1, X2, Y1, Y2는 모두 정수이며, R1, R2는 모두 자연수이다.

-109X1, X2, Y1, Y2 ≤ 109, 0 < R1, R2 ≤ 109

출력

두 과녁이 겹치면 YES, 아니면 NO를 출력한다.

단, 두 과녁이 한 점에서 만나는 경우는 겹치지 않는 것으로 생각한다.

출처: 백준, https://https://www.acmicpc.net/

2. 해결방법 시간복잡도

  1. 단순 코딩 O(1)

3. 문제 해결 및 코드


  • 주석을 참고하면서 이해를 돕습니다.

4. 알고리즘 및 해설

  1. 기하학 문제로 해당 D라는 두 과녁사이의 차를 구해준다.
  2. 이때 두 과녁 사이의 반지름의 합이 두 과녁 사이의 거리보다 크다면 YES를 출력해준다.
    • 이는 해당 과녁 안에 들어오는 경우이므로 겹치게 된다.
  3. 아니라면 NO 를 출력해준다.