Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준oj]1002번 터렛

    2020. 4. 23.

    by. Hyeon-Uk

    반응형

    www.acmicpc.net/problem/1002

     

    1002번: 터렛

    각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

    www.acmicpc.net


     

    조규현의 좌표(x1,y1)를 중점으로 잡고, 류재명과의 거리 r1을 반지름으로 잡는다.

    똑같이 백승환의 좌표(x2,y2)를 중점으로 잡고, 류재명과의 거리 r2를 반지름으로 잡는다.

     

    이런뒤 두 원의 테두리가 교차하는 지점이 곧 마린(류재명)이 있을 수 있는 위치이다.

     

    두 점 사이의 거리를 D라 하자.

    D!=0인경우

    1) D<r1+r2, 인경우, 교점은 2개가 생긴다.

    2) D==r1+r2 인 경우와 r1-r2==D(단 r1>r2,D!=0) 인 경우 교점은 1개가 생긴다.

    3) D>r1+r2 인 경우와 r1-r2>D(단r1>r2) 인 경우,교점은 0개이다.

    D==0인 경우

    1)r1==r2인 경우 무한개의 교점이 나온다.

    2)r1!=r2인 경우 교점이 0개이다.

     

    이 경우들을 생각해서 코드를 짜 놓으면 된다.

    #include <iostream>
     
    using namespace std;
    
    int main(){
        int t;
        cin >>t;
        while(t--){
        	//좌표 입력
            long long x1,x2,y1,y2,r1,r2,i;
            cin>>x1>>y1>>r1>>x2>>y2>>r2;
            
            //두 좌표 사이의 거리
            long long dx=x1-x2;
            long long dy=y1-y2;
            long long d=dx*dx+dy*dy;
            
            if(r1>r2){
                i=r1;
                r1=r2;
                r2=i;
            }
            long long add=r1+r2;
            add=add*add;
            long long sub= r2-r1;
            sub=sub*sub;
            
            if(d < add &&d>sub){
                cout<<2;
            }
            else if(d==add||(d==sub&&d!=0)){
                cout<<1;
            }
            else if(d<sub||d>add){
                cout<<0;
            }
            else if(d==0){
                if(r1==r2){
                    cout<<-1;
                }
                else{
                    cout<<0;
                }
            }
            cout<<'\n';
        }
        return 0;
    }

     

    반응형

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준oj] 1063번 킹  (0) 2020.11.11
    [백준oj] 1010번 다리놓기  (0) 2020.11.11
    [백준oj] 2420번 사파리월드  (0) 2020.11.05
    [백준oj] 1297번 TV 크기  (0) 2020.11.05
    [백준oj]1212번 8진수 2진수 /c,c++  (0) 2020.11.05

    댓글

    관련글

    • [백준oj] 1010번 다리놓기 2020.11.11
    • [백준oj] 2420번 사파리월드 2020.11.05
    • [백준oj] 1297번 TV 크기 2020.11.05
    • [백준oj]1212번 8진수 2진수 /c,c++ 2020.11.05
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바