문제 설명
제한 사항
입출력 예
풀이
import java.util.Scanner;
import java.math.BigDecimal;
import java.math.MathContext;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int caseNum = s.nextInt();
int[] xyr = new int[6];
for (int i = 0; i < caseNum; i++) {
for (int j = 0; j < 6; j++) xyr[j] = s.nextInt();
BigDecimal distance = BigDecimal.valueOf((int)Math.pow(xyr[0] - xyr[3], 2) + (int)Math.pow(xyr[1] - xyr[4], 2));
int compareDis = distance.compareTo(BigDecimal.valueOf((int)Math.pow(xyr[2] + xyr[5], 2)));
if (xyr[0] == xyr[3] && xyr[1] == xyr[4] && xyr[2] == xyr[5]) System.out.println("-1");
else if (compareDis == 1) System.out.println("0");
else if (compareDis == -1) {
BigDecimal temp = distance.sqrt(new MathContext(30)).add(BigDecimal.valueOf(Math.min(xyr[2], xyr[5])));
int compareTemp = temp.compareTo(BigDecimal.valueOf(Math.max(xyr[2], xyr[5])));
if (compareTemp == -1) System.out.println("0");
else if (compareTemp == 1) System.out.println("2");
else System.out.println("1");
}
else System.out.println("1");
}
}
}
후기
실패한 것의 반 정도는 어떻게 제출하는 건지 몰라서 틀리고, 나머지는 계산을 잘못해서 틀렸다... 실수를 계산하면서 오차가 생기는 것을 잘 해결하면 되는데 bigdecimal 안 쓰고 그냥 임의로 1e-10 이 정도로 오차 내인지 계산했으면 맞았을까..? 나중에 다시 풀어봐야겠다.
'코딩테스트 (백준) > Java' 카테고리의 다른 글
[백준][JAVA][실버1] 트리 순회 (0) | 2023.08.04 |
---|