-
[Baekjoon - 10497] Hitting the Targets문제 풀이/Baekjoon Online Judge 2023. 3. 2. 08:18
난이도: Bronze I
태그
더보기- Geometry
풀이
1. 점이 직사각형 안에 있는지 확인하는 방법은?
더보기직사각형의 좌측 하단 점을
, 우측 상단 점을 라고 합시다.우리가 입력받은 점이
라면, 점이 직사각형 안에 있기 위해서는 좌표는 이상 이하여야 하고, 좌표는 이상 이하여야 합니다.식으로 쓰자면,
, 가 됩니다.2. 점이 원 안에 있는지 확인하는 방법은?
더보기원의 중심을
, 반지름을 이라고 합시다.우리가 입력받은 점이
라면, 점이 원 안에 있기 위해서는중심과 점 사이의 거리가
이하여야 합니다.식으로 쓰자면,
이 됩니다.3. 코드
더보기실수 오차를 피하기 위해, 원 내부를 판별할 때에는 식의 양변을 제곱했습니다.
1234567891011121314151617181920212223242526272829vector<pi4> rec; vector<pi3> cir;void Main(){int n; cin >> n; while (n--){string typ; cin >> typ;if (typ[0] == 'r'){pi4 p; cin >> p.fr.fr >> p.fr.sc >> p.sc.fr >> p.sc.sc;rec.push_back(p);}if (typ[0] == 'c'){pi3 p; cin >> p.fr.fr >> p.fr.sc >> p.sc;cir.push_back(p);}}int q; cin >> q; while (q--){pi2 p; cin >> p.fr >> p.sc;int ans = 0;for (pi4 r : rec){if (r.fr.fr <= p.fr && p.fr <= r.sc.fr&& r.fr.sc <= p.sc && p.sc <= r.sc.sc){ ans += 1; }}for (pi3 c : cir){int y = p.fr - c.fr.fr, x = p.sc - c.fr.sc;int r = c.sc;if (y*y + x*x <= r*r){ ans += 1; }}cout << ans << endl;}}cs '문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon - 25449] Eurokulen (0) 2023.03.03 [Baekjoon - 2049] 가장 먼 두 점 (0) 2023.03.02 [Baekjoon - 15850] Random Number Generator (0) 2023.03.01 [Baekjoon - 12996] Acka (0) 2023.03.01 [Baekjoon - 2144] 울타리 넘기 (0) 2023.03.01