๋ฌธ์
์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ํฐ๋ ์ ๊ทผ๋ฌดํ๋ ์ง์์ด๋ค. ํ์ง๋ง ์๋ ์กด์ฌ๊ฐ์ด ์์ด์ ์ธ๊ตฌ์๋ ์ฐจ์งํ์ง ์๋๋ค. ๋ค์์ ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ์ฌ์ง์ด๋ค.
์ด์์์ ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์๊ฒ ์๋ํธ ๋ง๋ฆฐ(๋ฅ์ฌ๋ช )์ ์์น๋ฅผ ๊ณ์ฐํ๋ผ๋ ๋ช ๋ น์ ๋ด๋ ธ๋ค. ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ๊ฐ๊ฐ ์์ ์ ํฐ๋ ์์น์์ ํ์ฌ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ค.
์กฐ๊ทํ์ ์ขํ (x1, y1)์ ๋ฐฑ์นํ์ ์ขํ (x2, y2)๊ฐ ์ฃผ์ด์ง๊ณ , ์กฐ๊ทํ์ด ๊ณ์ฐํ ๋ฅ์ฌ๋ช ๊ณผ์ ๊ฑฐ๋ฆฌ r1๊ณผ ๋ฐฑ์นํ์ด ๊ณ์ฐํ ๋ฅ์ฌ๋ช ๊ณผ์ ๊ฑฐ๋ฆฌ r2๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฅ์ฌ๋ช ์ด ์์ ์ ์๋ ์ขํ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ ์ค์ x1, y1, r1, x2, y2, r2๊ฐ ์ฃผ์ด์ง๋ค. x1, y1, x2, y2๋ -10,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๊ณ , r1, r2๋ 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ๋ฅ์ฌ๋ช ์ด ์์ ์ ์๋ ์์น์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ฅ์ฌ๋ช ์ด ์์ ์ ์๋ ์์น์ ๊ฐ์๊ฐ ๋ฌดํ๋์ผ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
0 0 13 40 0 37
0 0 3 0 7 4
1 1 1 1 1 5
์์ ์ถ๋ ฅ 1
2
1
0
ํ์ด
์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ์ขํ์ ๋ฅ์ฌ๋ช ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋ ๋ฅ์ฌ๋ช ์ด ์์ ์ ์๋ ์ขํ์ ์
== ๋ ์ ์ ์ขํ์ ๋ฐ์ง๋ฆ์ด ์ฃผ์ด์ก์ ๋ ๋ ์์ ๊ต์ฐจ์ ์ ๊ฐ์
A(x1, y1) ๋ฐ์ง๋ฆ r1, B(x2, y2) ๋ฐ์ง๋ฆ r2 ์ผ๋ ๋ ์ ์ ๊ฑฐ๋ฆฌ distance = ๋ฃจํธ(( x1 - x2 )^2 + ( y1 - y2 )^2) ๋ผ ํ๋ค.
1. ๋ ์์ด ์ผ์นํ ๋ : distance == 0 && r1 == r2
2. ๋ ์์ด ๊ต์ฐจํ์ง ์์ ๋ : r1 + r2 < distance || r1 - r2 > distance
3. ๋ ์์ด 1๋ฒ ๊ต์ฐจํ ๋ : r1 - r2 = distance || r1 + r2 = distance
4. ๋ ์์ด 2๋ฒ ๊ต์ฐจํ ๋ : r1 - r2 < distance < r1 + r2
์ด์ง๋ง ์ค์ฐจ๋ฅผ ์ค์ด๊ธฐ ์ํด distance^2, (r1 - r2)^2, (r1 + r2)^2์ ๋น๊ตํ๊ฒ ๋ค.
=> Math.pow() ๋ฉ์๋ ์ฌ์ฉ
import java.io.*;
import java.util.StringTokenizer;
public class B1002 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for(int i = 0; i < t; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x1 = Integer.parseInt(st.nextToken());
int y1 = Integer.parseInt(st.nextToken());
int r1 = Integer.parseInt(st.nextToken());
int x2 = Integer.parseInt(st.nextToken());
int y2 = Integer.parseInt(st.nextToken());
int r2 = Integer.parseInt(st.nextToken());
int distance = (int)((Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)));
int add = (int) Math.pow(r1 + r2, 2);
int sub = (int) Math.pow(r1 - r2, 2);
if(x1 == x2 && y1 == y2 && r1 == r2) {
bw.write("-1\n");
} else if ( distance > add || distance < sub) {
bw.write("0\n");
} else if ( distance == add || distance == sub) {
bw.write("1\n");
} else if ( sub > distance || distance < add ){
bw.write("2\n");
}
}
bw.flush();
}
}