-
백준(Baekjoon)알고리즘 <문제번호 1004> - 어린왕자백준문제정리 2020. 3. 29. 00:56728x90반응형
문제
어린 왕자가 한 점(출발)으로 부터 한 점(도착점)으로 이동을 하려고 하는데 지나가야 하는 행성계들이 여러 개가 존재한다. 이 행성계를 피해서 지나가려면 어떻게 해야 할까?
초기 입력 출발 지점(start_x1,end_y1) 도착 지점(satrt_x2, end_y2) 가 존재하고 여러 개의 행성들의 중심(c_x,c_y) 반지름 (r)을 입력하여 어린 왕자가 몇 개의 행성계를 지나가는지 풀어본다.
풀이
우선 나의 처음 드는 생각은 행성계마다 반지름이 존재하기 때문에 반지름을 이용하여 행성계 중심으로부터 얼마나 떨어져 있는지 확인하면 될 것이라고 생각을 하였는데 조금의 오차가 있었다.
그래서 두 점 사이의 거리를 이용하여 출발지점과 도착지점 사이에 경계가 있는지 확인하면 되겠다고 생각하여 문제를 풀었다.
코드
123456789101112131415161718192021222324252627282930313233#include <iostream>#include <math.h>using namespace std;int main(){int testcase{};int start_x1{}, end_y1{};int start_x2{}, end_y2{};int planet;int c_x, c_y, r;int count = 0;cin >> testcase;for (int i = 0; i < testcase; ++i){cin >> start_x1 >> end_y1 >> start_x2 >> end_y2;cin >> planet;for (int j = 0; j < planet; ++j){cin >> c_x >> c_y >> r;if (pow(start_x1 - c_x, 2) + pow(end_y1 - c_y, 2) > pow(r, 2) &&pow(start_x2 - c_x, 2) + pow(end_y2 - c_y, 2) < pow(r, 2))count++;else if (pow(start_x1 - c_x, 2) + pow(end_y1 - c_y, 2) < pow(r, 2) &&pow(start_x2 - c_x, 2) + pow(end_y2 - c_y, 2) > pow(r, 2))count++;}cout << count << endl;count = 0;}}cs 반응형'백준문제정리' 카테고리의 다른 글
백준(Baekjoon)알고리즘 <문제번호 1009> - 분산처리 (0) 2020.04.07 백준(Baekjoon)알고리즘 <문제번호 1003> - 피보나치 (0) 2020.04.05 백준(Baekjoon)알고리즘 <문제번호 1002> (0) 2020.03.22 백준(Baekjoon)알고리즘 <문제번호 1001> (0) 2020.03.22 백준(Baekjoon)알고리즘 첫번째! <문제번호 1000> (0) 2020.03.22