ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [1002번] ν„°λ ›
    SW/BAEKJOON(online judge) 2023. 6. 7. 14:57

     

     λ¬Έμ œμ—μ„œ μ›μ˜ 쀑심 μ’Œν‘œμ™€ λ°˜μ§€λ¦„μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ, 두 원이 λ§Œλ‚  수 μžˆλŠ” μœ„μΉ˜μ˜ 수λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 주어진 μž…λ ₯에 λŒ€ν•΄ λͺ¨λ“  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μ²˜λ¦¬ν•˜μ—¬ κ²°κ³Όλ₯Ό 좜λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

     λ‘ μ›μ˜ 쀑심 μ‚¬μ΄μ˜ 거리λ₯Ό κ΅¬ν•œ λ’€, λ‹€μŒκ³Ό 같은 μ„Έ 가지 경우둜 λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

      1. 두 원이 μ™„μ „νžˆ μΌμΉ˜ν•˜λŠ” 경우 (쀑심 사이 거리 == 0):
         λ‘ 원이 μΌμΉ˜ν•˜λ―€λ‘œ μœ„μΉ˜μ˜ μˆ˜λŠ” λ¬΄ν•œλŒ€μ΄λ―€λ‘œ -1을 좜λ ₯ν•©λ‹ˆλ‹€.
      2. 두 원이 μ™Έμ ‘ν•˜κ±°λ‚˜ λ‚΄μ ‘ν•˜λŠ” 경우 (쀑심 사이 거리 == λ°˜μ§€λ¦„μ˜ ν•© ν˜Ήμ€ μ°¨):
         λ‘ 원이 μ™Έμ ‘ν•˜κ±°λ‚˜ λ‚΄μ ‘ν•˜λ©΄μ„œ λ§Œλ‚˜λŠ” μœ„μΉ˜λŠ” ν•œ κ³³μž…λ‹ˆλ‹€. λ”°λΌμ„œ μœ„μΉ˜μ˜ μˆ˜λŠ” 1μž…λ‹ˆλ‹€.
      3. κ·Έ μ™Έμ˜ 경우:
         λ‘ 원이 두 μ μ—μ„œ λ§Œλ‚˜λŠ” 경우둜, μœ„μΉ˜μ˜ μˆ˜λŠ” 2μž…λ‹ˆλ‹€.

     

     μ΄ μ•Œκ³ λ¦¬μ¦˜μ„ μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

    import math

    def calculate_positions(x1, y1, r1, x2, y2, r2):
        distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)

        # λ‘ μ›μ΄ μ™„μ „νžˆ μΌμΉ˜ν•˜λŠ” κ²½μš°
        if distance == 0 and r1 == r2:
            return -1

        # λ‘ μ›μ΄ μ™Έμ ‘ν•˜κ±°λ‚˜ λ‚΄μ ‘ν•˜λŠ” κ²½μš°
        if distance == r1 + r2 or distance == abs(r1 - r2):
            return 1

        # κ·Έ μ™Έμ˜ κ²½μš°
        if distance > r1 + r2 or distance < abs(r1 - r2):
            return 0

        return 2

    # μž…λ ₯ μ˜ˆμ œ
    test_cases = int(input())

    for _ in range(test_cases):
        x1, y1, r1, x2, y2, r2 = map(int, input().split())
        result = calculate_positions(x1, y1, r1, x2, y2, r2)
        print(result)

    μœ„ μ½”λ“œλ₯Ό ν†΅ν•΄ μ£Όμ–΄μ§„ μž…λ ₯에 λŒ€ν•œ μΆœλ ₯을 μ–»μ„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

    'SW > BAEKJOON(online judge)' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    [1001번] A-B  (0) 2023.06.07
    [1000번] A+B  (0) 2023.06.07

    λŒ“κΈ€

Designed by Tistory.