반응형
이게 웬 난리.....
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
파이썬 코드
n = (int)(input())
for i in range(n):
x1, y1, r1, x2, y2, r2 = map(int, input().split())
# 피타고라스 거리 : y
y = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
rs = r1 + r2
rm = abs(r1 - r2)
if y == 0:
if r1 == r2:
print(-1)
else:
print(0)
else:
if rs == y or rm == y:
print(1)
elif rs > y and rm < y:
print(2)
else:
print(0)
두 점이 같고, 거리도 같으면 완전히 원이 겹치기 때문에 -1
두 점이 같고, 거리는 다르면 겹치는 점이 하나도 없기 때문에 0
두 거리를 합한 값이 두 점 사이의 거리와 같거나(두 원이 맞닿아 만남),
두 거리의 차이가 두 점 사이의 거리와 같으면(한 원이 다른 원을 포함하면서 한 점에서 겹침)
한 점에서 만나기 때문에 1
두 거리의 합이 두 점 사이의 거리보다 크면서, 두 거리의 차이가 두 점 사이의 거리보다 작으면
두 점에서 만나기 때문에 2
=> 여기서 뒤에 조건을 설정해주지 않아 계속 틀렸는데요 ㅠㅠ
만약 두 거리의 차이가 두 점 사이의 거리보다 크면 한 원이 다른 원을 완전히 포함하기 때문에 만나는 점이 없습니다.
그 이외에서는 모두 0
새롭게 알게된 사실 )
제곱근 구할 때, 굳이 import math해서 구하지 않아도 ** 0.5 해주면 구할 수 있습니다..!
반응형
'Programming > Coding Test' 카테고리의 다른 글
백준 5430 - 줄바꿈없이 print, split(), indexing, replace(), join (0) | 2021.01.12 |
---|---|
백준 1021 - deque를 이용해서 풀어보았습니다 (0) | 2021.01.12 |
백준 4153 - 피타고라스를 이용한 단순 수학 문제 (0) | 2021.01.11 |
백준 13305 - 파이썬으로 그리디 알고리즘 (0) | 2021.01.11 |
파이썬에서 정렬은 어떻게 하나요? 3차원일 때에는? (0) | 2021.01.11 |