알고리즘/BOJ

[BOJ] 1004. 어린 왕자

재담 2022. 4. 1. 01:05

문제 원본 : https://www.acmicpc.net/problem/1004

 

1004번: 어린 왕자

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주

www.acmicpc.net

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int t = Integer.parseInt(br.readLine());
        int n, x1, y1, x2, y2, cx, cy, r, ans;
        boolean flag1, flag2;
        StringTokenizer st;
        StringBuilder builder = new StringBuilder();

        while (t-- > 0) {
            ans = 0;

            st = new StringTokenizer(br.readLine());
            x1 = Integer.parseInt(st.nextToken());
            y1 = Integer.parseInt(st.nextToken());
            x2 = Integer.parseInt(st.nextToken());
            y2 = Integer.parseInt(st.nextToken());

            n = Integer.parseInt(br.readLine());
            for (int i = 0; i < n; ++i) {
                st = new StringTokenizer(br.readLine());
                cx = Integer.parseInt(st.nextToken());
                cy = Integer.parseInt(st.nextToken());
                r = Integer.parseInt(st.nextToken());

                flag1 = (cx - x1) * (cx - x1) + (cy - y1) * (cy - y1) < r * r;
                flag2 = (cx - x2) * (cx - x2) + (cy - y2) * (cy - y2) < r * r;

                if(flag1 ^ flag2) {
                    ++ans;
                }
            }

            builder.append(ans).append("\n");
        }

        bw.write(builder.toString());

        bw.close();
        br.close();
    }
}
  • 기하학 문제
  • 출발점과 도착점이 모두 한 원 안에 있거나, 둘 다 밖에 있을 경우 피해서 갈 수 있기 때문에
  • 둘 중 한 점만 한 원 안에 있어야 진입 / 이탈을 할 수 있다.

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 1057. 토너먼트  (0) 2022.04.03
[BOJ] 9375. 패션왕 신해빈  (0) 2022.04.02
[BOJ] 1620. 나는야 포켓몬 마스터 이다솜  (0) 2022.03.31
[BOJ] 13305. 주유소  (0) 2022.03.30
[BOJ] 9184. 신나는 함수 실행  (0) 2022.03.29