๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ฝ”๋”ฉํ…Œ์ŠคํŠธ(Baekjoon)

[python] Baekjoon 1004 : ์–ด๋ฆฐ ์™•์ž

by Seop๐Ÿ˜€ 2024. 1. 20.
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ - Baekjoon 1004 : ์–ด๋ฆฐ ์™•์ž

https://www.acmicpc.net/problem/1004

 

1004๋ฒˆ: ์–ด๋ฆฐ ์™•์ž

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ฒซ์งธ ์ค„์— ์ถœ๋ฐœ์  (x1, y1)๊ณผ ๋„์ฐฉ์  (x2, y2)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ํ–‰์„ฑ๊ณ„์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ

www.acmicpc.net

ํ•ต์‹ฌ

  • ๋ฌธ์ œ: ์–ด๋ฆฐ ์™•์ž๊ฐ€ ์€ํ•˜์ˆ˜๋ฅผ ์—ฌํ–‰ํ•˜๋ฉฐ ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์ง€๋‚˜๊ฐ€์•ผ ํ•˜๋Š” ํšŸ์ˆ˜ ๊ณ„์‚ฐํ•˜๊ธฐ

๋‚ด์šฉ

  • ์ด ๋ฌธ์ œ๋Š” ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์ง€๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์—ฌ๋Ÿฌ ํ–‰์„ฑ๊ณ„์˜ ์ค‘์‹ฌ ์ขŒํ‘œ์™€ ๋ฐ˜์ง€๋ฆ„์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ถœ๋ฐœ์ ์—์„œ ๋„์ฐฉ์ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ช‡ ๋ฒˆ ์ง€๋‚˜์น˜๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐํ•˜ํ•™์  ๊ณ„์‚ฐ๊ณผ ์กฐ๊ฑด ํŒ๋ณ„์ด ํ•„์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

study coding

์ ‘๊ทผ ๋ฐฉ๋ฒ•

  1. ์ขŒํ‘œ ์ž…๋ ฅ ์ฒ˜๋ฆฌ: ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
  2. ํ–‰์„ฑ๊ณ„ ์ •๋ณด ์ž…๋ ฅ ์ฒ˜๋ฆฌ: ๊ฐ ํ–‰์„ฑ๊ณ„์˜ ์ค‘์‹ฌ ์ขŒํ‘œ์™€ ๋ฐ˜์ง€๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
  3. ๊ฒฝ๊ณ„ ์ง„์ž…/์ดํƒˆ ์—ฌ๋ถ€ ํŒ๋‹จ: ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์ด ๊ฐ ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„ ๋‚ด๋ถ€์— ์žˆ๋Š”์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
  4. ์ง„์ž…/์ดํƒˆ ํšŸ์ˆ˜ ๊ณ„์‚ฐ: ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์ด ํ–‰์„ฑ๊ณ„ ๊ฒฝ๊ณ„ ๋‚ด๋ถ€์— ์œ„์น˜ํ•  ๋•Œ๋งŒ ์ง„์ž… ๋˜๋Š” ์ดํƒˆ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฒฐ๊ณผ ์ถœ๋ ฅ: ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๊ณ„์‚ฐ๋œ ์ง„์ž…/์ดํƒˆ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ

def is_inside(x, y, cx, cy, r):
    return (x - cx)**2 + (y - cy)**2 < r**2

# ์ž…๋ ฅ ์ฒ˜๋ฆฌ
T = int(input())
for _ in range(T):
    x1, y1, x2, y2 = map(int, input().split())
    n = int(input())
    count = 0

    for _ in range(n):
        cx, cy, r = map(int, input().split())
        if is_inside(x1, y1, cx, cy, r) != is_inside(x2, y2, cx, cy, r):
            count += 1

    print(count)

ํ’€์ด

  • ๊ฐ ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„ ๋‚ด๋ถ€์— ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜ is_inside๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ถœ๋ฐœ์ ๊ณผ ๋„์ฐฉ์ ์ด ํ–‰์„ฑ๊ณ„ ๊ฒฝ๊ณ„ ๋‚ด๋ถ€์— ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์œ„์น˜ํ•  ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๊ณ„์‚ฐ๋œ ์นด์šดํŠธ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ํ–‰์„ฑ๊ณ„์˜ ๊ฒฝ๊ณ„๋ฅผ ์ง€๋‚˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ž๋ฃŒ

  1. ๊ธฐํ•˜ํ•™์  ๊ณ„์‚ฐ: ์ขŒํ‘œ์™€ ๋ฐ˜์ง€๋ฆ„์„ ์‚ฌ์šฉํ•œ ๊ธฐํ•˜ํ•™์  ์œ„์น˜ ํŒ๋ณ„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.
  2. ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉ๋ฒ•: Python์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.
  3. ์ž…์ถœ๋ ฅ ๋ฐ ๋ฐ˜๋ณต๋ฌธ: Python์—์„œ ํšจ์œจ์ ์ธ ์ž…์ถœ๋ ฅ๊ณผ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.

space

์ถ”์ฒœ ๋งํฌ:

๋Œ“๊ธ€