일단 가장 급한건
scanf("%d %d %d %d %d %d", &x1, &x2, &r1, &y1, &y2, &r2);
이거를
scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2);
이렇게 바꾸는 겁니다.
입력받는 변수의 순서가 잘못됐어요ㅋㅋㅋ
그리고 사람들이 자주 하는 실수 중 하나..
printf("distance %d\n", distance);
같이, 문제 정답이랑 관련없이
나 혼자 보려고 출력하던 메세지를 안지우고 제출하시면
틀렸다는 메세지를 받게 됩니다.
저같은 경우 이 소스코드에서
x2,y1 순서 바꾸고
printf("distance %d\n", distance); 지우고
정답을 num 배열에 넣고 출력한게 아니라 위에분처럼 그때그때 출력하도록 바꿨더니 맞았습니다.
(셋 중 하나라도 안바꾸면 틀릴테고요...)
즉, 방법 자체는 맞았습니다. 축하드려요(..?!!)
댓글을 작성하려면 로그인해야 합니다.
cjynana 9년 전
http://www.acmicpc.net/problem/1002
#include <stdio.h>
#include <math.h>
inline int squa(int a)
{
return a * a;
}
int main(void)
{
int x1, x2, y1, y2, r1, r2;
int distance;
int num[100];
int i, j;
scanf("%d", &i);
for(j=0; j<i; j++)
{
scanf("%d %d %d %d %d %d", &x1, &x2, &r1, &y1, &y2, &r2);
while(1)
{
if(x1 < -10000 || x1 > 10000 || x2 < -10000 || x2 > 10000 || y1 < -10000 || y1 > 10000 || y2 < -10000 || y2 > 10000 || r1 < 0 || r1 > 10000 || r2 < 0 || r2 > 10000)
{
printf("\nPlease check number range!!\n");
scanf("%d %d %d %d %d %d", &x1, &x2, &r1, &y1, &y2, &r2);
}
else
break;
}
distance = squa(x2 - x1) + squa(y2 - y1);
printf("distance %d\n", distance);
if(distance == 0)
{
if(r1 == r2)
num[j] = -1;
else
num[j] = 0;
}
else if(distance == squa(r1 + r2))
num[j] = 1;
else if(distance == squa(r1 - r2))
num[j] = 1;
else if(distance > squa(r1 + r2))
num[j] = 0;
else if(distance < squa(r1 - r2))
num[j] = 0;
else
num[j] = 2;
}
for(j=0; j<i; j++)
printf("%d\n", num[j]);
return 0;
}
어느 부분을 빠트린걸까요 ㅠㅠ