Algorithm/BOJ(Baekjoon Online Judge)
[백준 - 1002번] 터렛 - Java
koucop
2020. 9. 5. 11:14
이번에는 BOJ의 1002번 문제 "터렛" 을 풀어보도록 하자
성공한 코드는 다음과 같다.
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = br.readLine();
int n = Integer.parseInt(line);
for(int i = 0; i < n; i++){
line = br.readLine();
int x1, y1, r1, x2, y2, r2;
x1 = Integer.parseInt(line.split(" ")[0]);
y1 = Integer.parseInt(line.split(" ")[1]);
r1 = Integer.parseInt(line.split(" ")[2]);
x2 = Integer.parseInt(line.split(" ")[3]);
y2 = Integer.parseInt(line.split(" ")[4]);
r2 = Integer.parseInt(line.split(" ")[5]);
if(r1 < r2){
int tempx = x2, tempy = y2, tempr = r2;
x2 = x1;
y2 = y1;
r2 = r1;
x1 = tempx;
y1 = tempy;
r1 = tempr;
}
int calcBtw = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
int calcComp;
if(calcBtw < r1 * r1){
calcComp = (r1 - r2) * (r1 - r2);
if(calcBtw == calcComp){
if(calcBtw == 0){
bw.write(-1 + "\n");
} else {
bw.write(1 + "\n");
}
} else if(calcBtw > calcComp){
bw.write(2 + "\n");
} else {
bw.write(0 + "\n");
}
} else if(calcBtw == r1 * r1){
bw.write(2 + "\n");
} else{
calcComp = (r1 + r2) * (r1 + r2);
if(calcBtw == calcComp){
bw.write(1 + "\n");
} else if(calcBtw < calcComp){
bw.write(2 + "\n");
} else {
bw.write(0 + "\n");
}
}
}
bw.flush();
br.close();
bw.close();
}
}
문제 : https://www.acmicpc.net/problem/1002
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.