PS/BaekJoon

1002 JAVA ν„°λ ›

chaerlo127 2023. 1. 1. 15:29
728x90
 

1002번: ν„°λ ›

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ λ₯˜μž¬λͺ…이 μžˆμ„ 수 μžˆλŠ” μœ„μΉ˜μ˜ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ λ₯˜μž¬λͺ…이 μžˆμ„ 수 μžˆλŠ” μœ„μΉ˜μ˜ κ°œμˆ˜κ°€ λ¬΄ν•œλŒ€μΌ κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

www.acmicpc.net

 

문제λ₯Ό ν’€λ©΄μ„œ κ°€μž₯ λ°œμƒν–ˆλ˜ μ—λŸ¬λ₯Ό ν•΄κ²°ν•œ 원인은  λ‹€μŒκ³Ό κ°™λ‹€.

 

접점이 2개인 것을 ν™•μΈν•˜λŠ” μ½”λ“œ λ°”λ‘œ μœ„μ— μž‘μ„±ν•˜λ‹€λ³΄λ‹ˆ 접점이 λ¬΄ν•œλŒ€μž„μ—λ„ λΆˆκ΅¬ν•˜κ³  접점이 1개, 2개둜 νŒŒμ•…λ˜λŠ” 것을 ν™•μΈν•˜μ˜€λ‹€. 
λ”°λΌμ„œ 접점이 λ¬΄ν•œλŒ€μ˜ 경우, κ°€μž₯ 처음 ν™•μΈν•΄μ•Όν•˜λŠ” λΆ€λΆ„μœΌλ‘œ 쑰건문 맨 μ•ž 뢀뢄에 μž‘μ„±ν•΄μ€˜μ•Ό ν•œλ‹€. 

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
// μ›λ“€μ˜ 접점을 κ΅¬ν•˜λŠ” 것
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T;
		try {
			T = Integer.parseInt(br.readLine());
			for(int i = 0; i<T; i++) {
				String answer = br.readLine();
				StringTokenizer st = new StringTokenizer(answer, " ");
				
				int x1 = Integer.parseInt(st.nextToken());
				int y1 = Integer.parseInt(st.nextToken());
				int r1 = Integer.parseInt(st.nextToken());
				int x2 = Integer.parseInt(st.nextToken());
				int y2 = Integer.parseInt(st.nextToken());
				int r2 = Integer.parseInt(st.nextToken());
				
				int r = (int)(Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)); // 두 점 μ‚¬μ΄μ˜ 거리의 제곱 κ΅¬ν•˜κΈ°

				// 접점 λ¬΄ν•œ λŒ€
					// x1 = x2, y1 = y2, r1 = r2일 λ•Œ
				if(x1 == x2 && y1 == y2 && r1 == r2) {
					System.out.println(-1);
				}
				// 접점 1개
					// μ™Έμ ‘: r1 + r2 = r인 경우 접점 1개
				else if(r == Math.pow(r1+r2, 2)) {
					System.out.println(1);
				}
					// λ‚΄μ ‘
				else if(r == Math.pow(r2-r1, 2)) {
					System.out.println(1);
				}
				// 접점이 없을 λ•Œ
					// λ‚΄λΆ€: ν•œ 원이 λ‹€λ₯Έ 원보닀 μ›”λ“±νžˆ μž‘μ€ 경우
				else if(r <Math.pow(r2-r1, 2)) {
					System.out.println(0);
				}
					// μ™ΈλΆ€: 두 원이 μ„œλ‘œ 접점이 μ—†λŠ” 경우
				else if(r> Math.pow(r1+r2, 2)) {
					System.out.println(0);
				}

				else { // 접점이 λ‘κ°œμΈ 경우
					System.out.println(2);
				}
			}
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
728x90