728x90
네 우선 문제를 정리해 봅시다.
조규현=A, 백승환=B, 류재명=C
A의 좌표: x1, y1, B의 좌표: x2, y2
AC거리: r1, BC거리: r2
그럼 간단히 생각을 해 보면 A, B각각의 점에서 r1, r2의 길이만큼 원을 그렸을 때 겹치는 부분이 C가 있을 수 있는 수가 되겠네요
초 경우의 수는 6가지가 됩니다.
아래 슬라이드쇼를 봐 주세요!(옆으로 넘어갑니다.)
012345
자 그럼 위의 경우에 맞게 코드를 짜 봅시다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
double distance(double x1, double y1, double x2, double y2) {
double x = fabs(x1 - x2);
double y = fabs(y1 - y2);
double result = sqrt((x * x) + (y * y));
return result;
}
int main() {
int testnum;
double A[3] = { 0, 0, 0 };
double B[3] = { 0, 0, 0 };
scanf("%d", &testnum);
for (int i = 0; i < testnum; i++) {
for (int j = 0; j < 3; j++) {
scanf("%lf", &A[j]);
}
for (int j = 0; j < 3; j++) {
scanf("%lf", &B[j]);
}
//printf("A: %lf %lf %lf\n", A[0], A[1], A[2]);
//printf("B: %lf %lf %lf\n", B[0], B[1], B[2]);
double d = distance(A[0], A[1], B[0], B[1]);
//printf("distance(A-B): %lf\n", d);
if((A[0]==B[0])&& A[1] == B[1]&& A[2] == B[2])
printf("-1\n");
else if ((d > A[2] + B[2]) || (d < fabs(A[2] - B[2])))
printf("0\n");
else if ((d == A[2] + B[2] )|| (d == fabs(A[2] - B[2])))
printf("1\n");
else if (d < A[2] + B[2])
printf("2\n");
}
return 0;
}
성공
'프로그래밍 공부 > 백준 문제풀기' 카테고리의 다른 글
[Python] 여러줄 한번에 읽기 (0) | 2022.11.17 |
---|---|
[백준]1065번 - 한수 파이썬 문제풀이(2가지 방법) (0) | 2022.09.26 |
[백준] 1874: 스택 수열 문제풀이 (Python) (0) | 2022.09.23 |
백준 연습문제 1001번 풀이 (0) | 2021.12.06 |
백준 연습문제 1000번 풀이 (0) | 2021.12.06 |