• Home
  • About
    • Ryureka Moment photo

      Ryureka

      Sin Prisa, Sin Pausa

    • About Me
    • Facebook
    • Github
    • Youtube
  • Projects
  • Posts
    • Posts
    • ProblemSolvings
    • Tags
    • Blog
    • Examples
  • ProblemSolving
    • ProblemSolving
    • BOJ
    • Programmers
    • SWEA
    • LeetCode
  • FrontEnd
    • FrontEnd
    • HTML
  • BackEnd
    • BackEnd
    • Server
      • Server
      • Spring
      • NodeJS
    • DataBase
      • DataBase
      • MySQL
      • MongoDB
  • Programming
    • Programming
    • Java
    • JS
    • Python
    • CleanCode
  • ComputerScience
    • DataStructure
    • Algorithm

[BOJ] 1002. 터렛

15 Apr 2026

Reading time ~1 minute

  • 풀이

풀이

import java.util.Scanner;

public class Main {
	public static final int INF = -1;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		for(int t = 0; t < T; t++) {
			int answer = 0;
			
			int x1 = sc.nextInt();
			int y1 = sc.nextInt();		
			int r1 = sc.nextInt();
			
			int x2 = sc.nextInt();		
			int y2 = sc.nextInt();
			int r2 = sc.nextInt();;

			int r_max = Math.max(r1, r2); 
			int r_min = Math.min(r1, r2);
			int DISTANCE_BETWEEN_CENTER = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
			int SUM_OF_RADIUS = (r1+r2)*(r1+r2);
			
			if(isCircleSame(x1,y1,r1,x2,y2,r2)) {
				System.out.println(INF);
				continue;
			}
			
			if(isCircleInside(r_max, r_min, DISTANCE_BETWEEN_CENTER)) {
				System.out.println(0);
				continue;
			}
			
			if(isStickyCircleInside(r_max, r_min, DISTANCE_BETWEEN_CENTER)) {
				System.out.println(1);
				continue;
			}
			
			if(DISTANCE_BETWEEN_CENTER < SUM_OF_RADIUS) {
				System.out.println(2);
			} else if(DISTANCE_BETWEEN_CENTER == SUM_OF_RADIUS) {
				System.out.println(1);
			} else {
				System.out.println(0);
			}
		}
		
	}
	
    // 두 원이 같을 때(무한대)
	public static boolean isCircleSame(int x1, int y1, int r1, int x2, int y2, int r2) {
		if(x1 == x2 && y1 == y2 && r1 == r2) return true;				
		return false;
	}
	
	// d + r_min < r_max;
	// d < r_max - r_min;
	// 한 원 안에 다른 원이 완전히 들어갔을 때(0)
	public static boolean isCircleInside(int r_max, int r_min, int DISTANCE_BETWEEN_CENTER) {		
		if(DISTANCE_BETWEEN_CENTER < r_max*r_max -2*r_max*r_min + r_min*r_min) return true;						
		return false;
	}
	
    // 내접(1)
	public static boolean isStickyCircleInside(int r_max, int r_min, int DISTANCE_BETWEEN_CENTER) {		
		if(DISTANCE_BETWEEN_CENTER == r_max*r_max -2*r_max*r_min + r_min*r_min) return true;						
		return false;
	}
}


기하학수학 Share