๐๋ฌธ์
์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ํฐ๋ ์ ๊ทผ๋ฌดํ๋ ์ง์์ด๋ค. ํ์ง๋ง ์๋ ์กด์ฌ๊ฐ์ด ์์ด์ ์ธ๊ตฌ์๋ ์ฐจ์งํ์ง ์๋๋ค. ๋ค์์ ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ์ฌ์ง์ด๋ค.
์ด์์์ ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์๊ฒ ์๋ํธ ๋ง๋ฆฐ(๋ฅ์ฌ๋ช )์ ์์น๋ฅผ ๊ณ์ฐํ๋ผ๋ ๋ช ๋ น์ ๋ด๋ ธ๋ค. ์กฐ๊ทํ๊ณผ ๋ฐฑ์นํ์ ๊ฐ๊ฐ ์์ ์ ํฐ๋ ์์น์์ ํ์ฌ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ค.
์กฐ๊ทํ์ ์ขํ (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์ ์ถ๋ ฅํ๋ค.
๐ฌ ์์ ์ ๋ ฅ
3
0 0 13 40 0 37
0 0 3 0 7 4
1 1 1 1 1 5
๐ฌ ์์ ์ถ๋ ฅ
2
1
0
๐ ๋์ ํ์ด
์ด ๋ฌธ์ ๋ ์ผ๋จ ์ด๋ ต์ง ์๋ค. ๋ ์์ ๊ต์ฐจํ๋ ์ ์ ๊ฐ์๋ง ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
์ผ๋จ ์ธ๊ฐ์ง๋ก ๋๋์ ์๋ค.
- ๋์ ์์ ๊ต์ฐจํ๋ ๋ ์
- ํ์ ์์ ๋ง๋๋ ๋ ์
- ๊ต์ฐจ ํ์ง ์๋ ๋ ์
- ๋ฌดํํ ๊ต์ฐจํ๋ ๋ ์
1. ๋์ ์์ ๊ต์ฐจํ๋ ๋ ์
(1) ๊ทธ๋ฆผ ์ฐธ๊ณ
์กฐ๊ฑด์์ด r' - r < d < r + r'์ด ์ฑ๋ฆฝํ๋ฉด ๋๋ค. r2 > r1 ์ธ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ r2-r1๋ฅผ ์ ๋๊ฐ์ผ๋ก ๊ณ์ฐํด์ฃผ์๋ค.
if(d > Math.abs(r2 - r1) && d < r1 + r2) {
bw.write("2");
}
2. ํ์ ์์ ๋ง๋๋ ๋ ์
(2) ๊ทธ๋ฆผ : ๋์์ด ์ธ์ ํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์กฐ๊ฑด์์ด r + r' == d ๊ฐ ๋๋ค.
(3) ๊ทธ๋ฆผ : ๋์์ด ๋ด์ ํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์กฐ๊ฑด์์ด r - r' == d ๊ฐ ๋๋ค.
else if(Math.abs(r1 - r2) == d || r1 + r2 == d) {
bw.write("1");
}
3. ๊ต์ฐจํ์ง ์๋ ๋ ์
(4) ๊ทธ๋ฆผ : ๋ ์์ ๊ฑฐ๋ฆฌ(d)๊ฐ r + r'๋ณด๋ค ํฌ๋ฉด ๋๋ค. ์กฐ๊ฑด์์ r + r' < d
(5) ๊ทธ๋ฆผ : ๋ ์์ ๊ฑฐ๋ฆฌ(d)๊ฐ r' - r ๋ณด๋ค ์์ผ๋ฉด ๋๋ค. ์กฐ๊ฑด์์ Math.abs(r - r') > d
(6) ๊ทธ๋ฆผ : ๋์ฌ์์ผ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ๋ ์์ ๊ฑฐ๋ฆฌ(d) == 0 ์ด ๋๋ ๊ฒฝ์ฐ์ด๋ค. ์กฐ๊ฑด์์ d == 0
else if (r1 + r2 < d || Math.abs(r2 - r1) > d || d == 0) {
bw.write("0");
}
4. ๋ฌดํํ ๊ต์ฐจํ๋ ๋ ์
๋ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ(d) == 0 ์ด๊ณ , r == r' ์ธ ๊ฒฝ์ฐ์ด๋ค. ์กฐ๊ฑด์์ r == r' && d == 0
if(d == 0 && r1 == r2) {
bw.write("-1");
}
๐ด์ ์ฒด ์ฝ๋
import java.io.*;
import java.util.StringTokenizer;
public class Terret_1002 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(bf.readLine());
for (int i = 0; i < T; i++) {
st = new StringTokenizer(bf.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());
double d = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
if (d == 0 && r1 == r2) {
bw.write("-1");
} else if (d > Math.abs(r2 - r1) && d < r1 + r2) {
bw.write("2");
} else if (Math.abs(r2 - r1) == d || r2 + r1 == d) {
bw.write("1");
} else if (r1 + r2 < d || Math.abs(r2 - r1) > d || d == 0) {
bw.write("0");
}
bw.write("\n");
}
bw.flush();
bw.close();
}
}
์ฐธ๊ณ : mathbang.net/101mathbang.net/101