한 원이 다른 원 안에 중심점은 다르지만 들어있는 경우가 고려되지 않은 것 같습니다.
2
0 0 100 1 1 1
0 0 2 1 0 1
위는 완전히 안에 포함됐으므로 0이고, 아래는 내접하므로 1이어야 하는데 둘 다 2가 출력됩니다.
1002번 - 터렛
답변 감사드립니다. 말씀하신대로 결함있는 부분을 다음과 같이 고쳤습니다.
if(meter > (r1 + r2)) cross[i] = 0;
else if(meter == (r1 + r2)) cross[i] = 1;
else if((meter > Math.abs(r1 - r2)) && (meter < (r1 + r2))) cross[i] = 2;
else if((meter < Math.abs(r1 - r2)) && (meter > 0)) cross[i] = 0;
else if((meter == Math.abs(r1 - r2))){
if((r1 > r2) || (r1 < r2)) cross[i] = 1;
else cross[i] = -1;
}
else if(meter == 0) {
if((r1 > r2) || (r1 < r2)) cross[i] = 0;
else cross[i] = -1;
}
위의 결과 입력해서 각각 0, 1 나오는 것까지 확인했는데, 계속 틀렸다고 나오네요. 제가 뭔가 빠뜨린 게 있을까요?
댓글을 작성하려면 로그인해야 합니다.
fred1991 3년 전
어린왕자 문제인데... 결과는 맞게 나오는데, 채점은 계속 틀린다고 나오네요.
일단 [meter = 두 점 사이의 거리]를 말하는 거고. r1, r2는 반지름(반경)인데
1. 두 원이 서로 멀리 떨어져 있는 경우(meter > (r1 + r2))에는 출력을 0으로
2. 두 원이 딱 맞닿아 있는 경우(meter == (r1 + r2))는 출력이 1,
3. 두 원이 교차해있다면(meter > 0 && meter < (r1 + r2)) 출력을 2로 설정했습니다.
4. 여기에 두 원이 같은 중점을 공유할 경우((x2 == x1) && (y2 == y1))
--한 원이 다른 원보다 크다면((r1 > r2) || (r1 < r2)) 출력을 0으로
--두 원이 크기가 똑같다면(r1 == r2) 출력을 -1로 했습니다.
일단 이렇게 해놓았는데 뭐가 문제일까요?