8.기본수학2 터렛
🚩 기본수학2단계 터렛
🔦 문제 알아보기
🎲 문제
A지점의 터렛과 B지점의 터렛이 있다.
본부에서 각 터렛에 적군의 위치를 계산하라는 명령이 떨어졌고, 각 터렛들은 자신의 위치에서 현재 적까지의 거리를 계산했다.
A지점 터렛의 좌표 (x1, y1)
, B지점 터렛의 좌표 (x2, y2)
가 주어지고, 각 터렛과 적군의 거리 r1, r2
가 주어졌을 때, 적군이 있을 수 있는 좌표의 수를 구하라.
🔷 입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
x1, y1, x2, y2는 -10,000 <= n <= 10,000
인 정수이며, r1, r2는 10,000보다 작거나 같은
자연수이다.
🔶 출력
각 테스트 케이스마다 적군이 있을 수 있는 위치의 수를 출력하고, 만약 위치의 수가 무한대일 경우 -1
을 출력한다.
⚙️ 문제 풀기
✨ 경우의 수 살펴보기
🎲 문제
A지점의 터렛과 B지점의 터렛이 있다.
본부에서 각 터렛에 적군의 위치를 계산하라는 명령이 떨어졌고, 각 터렛들은 자신의 위치에서 현재 적까지의 거리를 계산했다.
A지점 터렛의 좌표(x1, y1)
, B지점 터렛의 좌표(x2, y2)
가 주어지고, 각 터렛과 적군의 거리r1, r2
가 주어졌을 때, 적군이 있을 수 있는 좌표의 수를 구하라.
🔷 입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
x1, y1, x2, y2는-10,000 <= n <= 10,000
인 정수이며, r1, r2는10,000보다 작거나 같은
자연수이다.
🔶 출력
각 테스트 케이스마다 적군이 있을 수 있는 위치의 수를 출력하고,
만약 위치의 수가 무한대일 경우 -1
을 출력한다.
⚙️ 문제 풀기
✨ 경우의 수 살펴보기
1. distance == 0 and r1 == r2
두 터렛이 같은 위치에 있고, 적군과의 거리가 같을 때, 적이 있을 수 있는 위치가 무한대이다.
2. abs(r1 - r2) < distance < r1 + r2
두 터렛의 거리가 적군과의 거리의 합보다는 작지만 각 적군과의 거리의 차보다는 클 때, 두 원이 만나는 점이 두군데이다.
3. r1+r2 == distance or abs(r1-r2) == distance
두 터렛에서 관측한 적군의 거리의 합이 두 터렛의 거리와 같다. 혹은, 두 거리의 차이가 터렛사이 거리과 같다면, 두 원은 한점에서 만난다.
4. r1+r2 < distance or distance < abs(r2 - r1)
각 터렛에서 관측한 적의 위치가 서로 멀어 원이 겹치지 않는다. 또는 같은 위치에서 서로 관측한 적군과의 거리가 다를 때 또한 겹치지 않는다.
코드
import math
num = int(input())
data = []
for i in range(num):
data.append(list(map(int, input().split(' '))))
for x1, y1, r1, x2, y2, r2 in data:
distance = math.sqrt((x1-x2)**2 + (y1-y2)**2)
if(distance == 0 and r1==r2):
print(-1)
elif(abs(r1 - r2) < distance < r1 + r2):
print(2)
elif(r1+r2 == distance or abs(r1-r2) == distance): #한점에서 만날때
print(1)
elif(r1+r2 < distance): #멀어서 떨어짐
print(0)
elif(distance < abs(r2 - r1)):
print(0)
Author And Source
이 문제에 관하여(8.기본수학2 터렛), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jo1132/8.기본수학2-터렛저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)