백준 1002_터렛.cpp

<소스코드>

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int NumTestCases;
    cin >> NumTestCases;
    for(int i = 0; i < NumTestCases; i++){
        int x1,y1,r1;
        int x2,y2,r2;
        int answer;
        cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
        int distance = pow(x1-x2,2) + pow(y1-y2,2);
        
        if(x1 == x2 && y1 == y2 && r1 == r2){
            answer = -1;
            cout << answer << endl;
            continue;
        }
        //cout << distance << " " << pow(r1+r2,2) << endl;
        if(pow(r1+r2,2) == distance || pow(r1-r2,2) == distance){
            answer = 1;
        }else if(pow(r1+r2,2) < distance || pow(r1-r2,2) > distance){
            answer = 0;
        }else if(pow(r1-r2,2) < distance && distance < pow(r1+r2,2)){
            answer = 2;
        }
        
        cout << answer << endl;
    }
}
  1. 변수&함수
    int NumTestCases : 테스트케이스의 개수
    int x1,y1,r1 : 조규현의 위치와 거리
    int x2,y2,r2 : 백승환의 위치와 거리
    int distance : 조규현과 백승환의 거리
    int anaswer : 류재형이 있을 수 있는 곳
  1. 알고리즘
    distance와 반지름과의 관계를 통해서 answer을 구한다.
    1. 내점, 외접 : 1개
    2. 내부, 외부 : 0개
    3. 두 점에서 만날때 : 2개
    4. 아예 같은 원 : 무한개
  1. 배운점
    x..
  1. 아쉬운점&느낀점
    너무 꼬와서 생각했다. 문제를 잘 이해하는 것이 중요한 거 같다.

좋은 웹페이지 즐겨찾기