Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 1002번] 터렛 - Java

koucop 2020. 9. 5. 11:14

 

이번에는 BOJ의 1002번 문제 "터렛" 을 풀어보도록 하자

 

성공한 코드는 다음과 같다.

import java.io.*;

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));
        String line = br.readLine();
        int n = Integer.parseInt(line);
        for(int i = 0; i < n; i++){
            line = br.readLine();
            int x1, y1, r1, x2, y2, r2;
            x1 = Integer.parseInt(line.split(" ")[0]);
            y1 = Integer.parseInt(line.split(" ")[1]);
            r1 = Integer.parseInt(line.split(" ")[2]);
            x2 = Integer.parseInt(line.split(" ")[3]);
            y2 = Integer.parseInt(line.split(" ")[4]);
            r2 = Integer.parseInt(line.split(" ")[5]);
            if(r1 < r2){
                int tempx = x2, tempy = y2, tempr = r2;
                x2 = x1;
                y2 = y1;
                r2 = r1;
                x1 = tempx;
                y1 = tempy;
                r1 = tempr;
            }
            int calcBtw = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
            int calcComp;
            if(calcBtw < r1 * r1){
                calcComp = (r1 - r2) * (r1 - r2);
                if(calcBtw == calcComp){
                    if(calcBtw == 0){
                        bw.write(-1 + "\n");
                    } else {
                        bw.write(1 + "\n");
                    }
                } else if(calcBtw > calcComp){
                    bw.write(2 + "\n");
                } else {
                    bw.write(0 + "\n");
                }
            } else if(calcBtw == r1 * r1){
                bw.write(2 + "\n");
            } else{
                calcComp = (r1 + r2) * (r1 + r2);
                if(calcBtw == calcComp){
                    bw.write(1 + "\n");
                } else if(calcBtw < calcComp){
                    bw.write(2 + "\n");
                } else {
                    bw.write(0 + "\n");
                }
            }
        }
        bw.flush();
        br.close();
        bw.close();
    }
}

 

문제 : https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.