백준 1002번 바로가기

나의 풀이

for _ in range(int(input())):
  a, b, c, d, e, f = map(int, input().split())

  x = max(c,f)
  y = min(c,f)
  l = ((d-a)**2+(e-b)**2)**0.5
  
  if a==d and b==e and c==f:
    print(-1)
  else:
    if l > x+y:
      print(0)
    elif l == x+y:
      print(1)
    else:
      if l > x-y:
        print(2)
      elif l == x-y:
        print(1)
      else:
        print(0)

CODE REVIEW

  1. 중학교 때 배웠던 두 원의 위치관계를 응용한 문제였다. 경우만 잘 나눌 수 있다면 생각보다 구현은 어렵지 않았다.
  2. 거리 $r_{1}$과 $r_{2}$을 반지름으로 생각하고, x1 y1 x2 y2을 원의 중심으로 치환하면 간단한 중학교 수학문제로 바뀐다.