Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 우선순위 큐
- 그리디
- BeautifulSoup
- MST
- 시뮬레이션
- 백트래킹
- 비트마스크
- 큐
- 피보나치 수
- 스택
- Knapsack
- 이분 탐색
- 메모리풀
- 순열
- dfs
- SSAFY
- 크루스칼
- 클래스
- 세그먼트 트리
- 분할 정복
- 재귀
- BFS
- 조합
- 중복 순열
- lis
- 링크드리스트
- 완전 탐색
- 빠른 입출력
- 문자열
- DP
Archives
- Today
- Total
작심 24/7
[백준] 1002번 터렛 본문
1002번: 터렛
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
www.acmicpc.net
각각의 좌표를 기준으로 거리 r을 가질 수 있는 범위를 연결해보면 원이 나온다.
따라서 이 문제는 두 원의 위치 관계에 따른 교점의 개수를 구하는 문제이다.
교점의 개수를 기준으로 두 원을 그려보면 이러한 경우의 수들이 나온다
조건문의 순서를 주의해서 작성해주면 끝
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int T;
cin >> T;
for (int t = 0; t < T; t++) {
int x1, y1, r1, x2, y2, r2;
cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
double distance = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
if (x1 == x2 && y1 == y2 && r1 == r2)cout << -1 << "\n";
else if (x1 == x2 && y1 == y2 && r1 != r2) cout << 0 << "\n";
else if (r1 + r2 == distance || abs(r1 - r2) == distance)cout << 1 << "\n";
else if (r1 + r2 > distance && abs(r1 - r2) < distance)cout << 2 << "\n";
else cout << 0 << "\n";
}
return 0;
}
'백준' 카테고리의 다른 글
[백준] 11729번 하노이 탑 이동 순서 (0) | 2020.05.20 |
---|---|
[백준] 2447번 별 찍기 - 10 (2) | 2020.05.20 |
[백준] 1929번 소수 구하기 (2) | 2020.05.20 |
[백준] 1193번 분수찾기 (0) | 2020.05.20 |
[백준] 11720번 숫자의 합 (0) | 2020.05.20 |
Comments