아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

데이터 체커

면접 대비

시간 제한1초메모리 제한1024 MB

요약
중심이 x축 위에 있는 N개의 원이 주어질 때, 임의의 두 원이 만나지 않고 서로 포함하거나 분리되어 있는지 판정한다.
난이도

보통10점 중 6점

유형
정렬, 구간, 그리디, 기하
정답자
아직 제출이 없습니다

문제

원 이동하기 2 문제를 만들고, 만든 데이터가 문제의 조건에 맞는지 확인하는 코드를 작성해야 한다.

해당 문제의 데이터는 아래 조건을 만족해야 한다.

  1. 모든 원의 중심 좌표는 xx축 위에 존재해야 한다.
  2. NN개의 원 중 임의의 두 원을 선택했을 때, 교점이 존재하지 않아야 한다. 즉, 하나의 원이 다른 원 안에 존재하거나 외부에 존재한다.

데이터 형식은 원의 개수 NN과 각 원의 중심 xx좌표, 원의 반지름 rr만 주어진다. 따라서 2번 조건을 만족하는지만 확인하면 된다.

주어진 데이터가 해당 조건을 만족하는지 확인해보자.

입력

첫 번째 줄에는 원의 개수 NN이 주어진다.

두 번째 줄부터 N+1N+1번째 줄까지 원의 중심 xx좌표, 원의 반지름 rr이 공백으로 구분되어 주어진다.

출력

데이터가 조건에 맞는다면 YES, 조건을 만족하지 않는다면 NO를 출력한다.

제한

  • 2≤N≤200,0002 ≤ N ≤ 200,000
  • −1,000,000≤x≤1,000,000-1,000,000 ≤ x ≤ 1,000,000
  • 1≤r≤10,0001 ≤ r ≤ 10,000
  • x,rx, r은 정수

힌트

두 원의 위치관계

두 원의 위치관계를 파악할 때 아래를 이용하면 된다.

원 A의 반지름은 r_Ar\_A, 원 B의 반지름은 r_Br\_B, 원 A와 원 B의 중심 사이의 거리를 dd라고 하자.

두 점에서 만난다.한 점에서 만난다.만나지 않는다.
외접내접외부에 있는 경우내부에 있는 경우동심원
∥r_A−r_B∥<d<r_A+r_B\|r\_A-r\_B\|<d<r\_A+r\_Br_A+r_B=dr\_A+r\_B=d∥r_A−r_B∥=d\|r\_A-r\_B\|=dr_A+r_B<dr\_A+r\_B<dd<∥r_A−r_B∥d<\|r\_A-r\_B\|d=0d=0

두 점 사이의 거리

(x_1,y_1)(x\_1, y\_1)와 (x_2,y_2)(x\_2, y\_2) 사이의 거리 dd를 구하는 식은 아래와 같다.

d=(x_1−x_2)2+(y_1−y_2)2d = \sqrt{(x\_1-x\_2)^2+(y\_1-y\_2)^2}

예제2

  1. 예제 1

    입력
    4
    5 4
    3 1
    6 1
    13 3
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    4
    3 1
    4 1
    5 1
    6 5
    
    예상 출력
    NO