Problem Solving/BOJ & Programmers

[BOJ] 1002번: ν„°λ ›

geum 2024. 10. 3. 07:28

✏️ 문제

μ‘°κ·œν˜„κ³Ό λ°±μŠΉν™˜μ€ 터렛에 κ·Όλ¬΄ν•˜λŠ” 직원이닀. ν•˜μ§€λ§Œ μ›Œλ‚™ 쑴재감이 μ—†μ–΄μ„œ μΈκ΅¬μˆ˜λŠ” μ°¨μ§€ν•˜μ§€ μ•ŠλŠ”λ‹€. λ‹€μŒμ€ μ‘°κ·œν˜„κ³Ό λ°±μŠΉν™˜μ˜ 사진이닀.

이석원은 μ‘°κ·œν˜„κ³Ό λ°±μŠΉν™˜μ—κ²Œ μƒλŒ€νŽΈ 마린(λ₯˜μž¬λͺ…)의 μœ„μΉ˜λ₯Ό κ³„μ‚°ν•˜λΌλŠ” λͺ…령을 λ‚΄λ Έλ‹€. μ‘°κ·œν˜„κ³Ό λ°±μŠΉν™˜μ€ 각각 μžμ‹ μ˜ ν„°λ › μœ„μΉ˜μ—μ„œ ν˜„μž¬ μ κΉŒμ§€μ˜ 거리λ₯Ό κ³„μ‚°ν–ˆλ‹€.

μ‘°κ·œν˜„μ˜ μ’Œν‘œ 와 λ°±μŠΉν™˜μ˜ μ’Œν‘œ κ°€ 주어지고, μ‘°κ·œν˜„μ΄ κ³„μ‚°ν•œ λ₯˜μž¬λͺ…κ³Όμ˜ 거리 κ³Ό λ°±μŠΉν™˜μ΄ κ³„μ‚°ν•œ λ₯˜μž¬λͺ…κ³Όμ˜ 거리 κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, λ₯˜μž¬λͺ…이 μžˆμ„ 수 μžˆλŠ” μ’Œν‘œμ˜ 수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

πŸ€– μž…μΆœλ ₯ μ˜ˆμ‹œ

 

πŸ’‘ 풀이

두 μ›μ˜ 쀑심 κ°„ 거리와 각각의 λ°˜μ§€λ¦„μ„ μ΄μš©ν•΄μ„œ ꡐ점 개수λ₯Ό μ„ΈλŠ” λ¬Έμ œμ˜€λ‹€. -1, 0, 1, 2κ°€ 좜λ ₯λ˜μ–΄μ•Ό ν•˜λŠ” 쑰건을 잘 μ„€μ •ν•˜λŠ” 게 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•˜λŠ” 문제!

 

T = int(input())

for _ in range(T):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    
    d = abs(x1-x2)**2+abs(y1-y2)**2 # 원 쀑심 κ°„ 거리
    
    if (x1 == x2 and y1 == y2) and (r1 == r2):
        print(-1)
    elif d == 0 or d > (r1+r2)**2 or abs(r1-r2)**2 > d:
        print(0)
    elif abs(r1-r2)**2 == d or (r1+r2)**2 == d:
        print(1)
    else:
        print(2)