어린왕자가 행성을 몇개를 통과하는지 세는 문제다
피타고라스 정리의 의해 반지름 r^2= x^2+y^2 이므로 r^2보다 위치의 제곱을 더한 값이 작다면 그 원 안에 있으므로
카운트를 해주면 된다.
단, 시작점과 끝점이 모두 같은 원 안에 있을 수 있으므로, 둘 다 반지름보다 안에 있지 않다면 이라는 조건을
추가해주어 예외를 처리해야한다
https://www.acmicpc.net/problem/1004
#include <bits/stdc++.h>
using namespace std;
int main(){
int tr;
cin >> tr;
for(int i=0; i<tr; i++){
int xs, ys, xe, ye, n;
int cnt=0;
cin >> xs;
cin >> ys;
cin >> xe;
cin >> ye;
cin >> n;
for(int j=0; j<n; j++){
int xt, yt, r;
cin >> xt;
cin >> yt;
cin >> r;
if( !((r*r > pow(xt-xs, 2) + pow(yt-ys, 2)) && (r*r > pow(xt-xe, 2) + pow(yt-ye, 2))) ){
if(r*r > pow(xt-xs, 2) + pow(yt-ys, 2))
cnt++;
if(r*r > pow(xt-xe, 2) + pow(yt-ye, 2))
cnt++;
}
}
cout << cnt << "\n";
}
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1543/c++] 문자 검색 - 문자열 (0) | 2022.06.24 |
---|---|
[백준 1316/c++] 그룹 단어 체커 - 문자열 (0) | 2022.06.24 |
[백준 1541/c++] 잃어버린 괄호 (0) | 2022.06.24 |
[백준 9012/c++] 괄호 - 문자열 - 스택 (0) | 2022.06.23 |
[백준 4673/c++] 셀프 넘버 (0) | 2022.06.23 |
댓글