๋ฐ์ํ
๋ฌธ์ - Baekjoon 1004 : ์ด๋ฆฐ ์์
https://www.acmicpc.net/problem/1004
1004๋ฒ: ์ด๋ฆฐ ์์
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ์ผ์ด์ค์ ๋ํด ์ฒซ์งธ ์ค์ ์ถ๋ฐ์ (x1, y1)๊ณผ ๋์ฐฉ์ (x2, y2)์ด ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค์๋ ํ์ฑ๊ณ์ ๊ฐ์ n์ด ์ฃผ
www.acmicpc.net
ํต์ฌ
- ๋ฌธ์ : ์ด๋ฆฐ ์์๊ฐ ์ํ์๋ฅผ ์ฌํํ๋ฉฐ ํ์ฑ๊ณ์ ๊ฒฝ๊ณ๋ฅผ ์ต์ํ์ผ๋ก ์ง๋๊ฐ์ผ ํ๋ ํ์ ๊ณ์ฐํ๊ธฐ
๋ด์ฉ
- ์ด ๋ฌธ์ ๋ ํ์ฑ๊ณ์ ๊ฒฝ๊ณ๋ฅผ ์ต์ํ์ผ๋ก ์ง๋๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ์ ๋๋ค. ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ ์ขํ๊ฐ ์ฃผ์ด์ง๊ณ , ์ฌ๋ฌ ํ์ฑ๊ณ์ ์ค์ฌ ์ขํ์ ๋ฐ์ง๋ฆ์ด ์ฃผ์ด์ง ๋, ์ถ๋ฐ์ ์์ ๋์ฐฉ์ ๊น์ง ์ด๋ํ๋ฉด์ ํ์ฑ๊ณ์ ๊ฒฝ๊ณ๋ฅผ ๋ช ๋ฒ ์ง๋์น๋์ง ๊ณ์ฐํ๋ ๋ฌธ์ ์ ๋๋ค. ๊ธฐํํ์ ๊ณ์ฐ๊ณผ ์กฐ๊ฑด ํ๋ณ์ด ํ์ํ ๋ฌธ์ ์ ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
- ์ขํ ์ ๋ ฅ ์ฒ๋ฆฌ: ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ ์ขํ๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
- ํ์ฑ๊ณ ์ ๋ณด ์ ๋ ฅ ์ฒ๋ฆฌ: ๊ฐ ํ์ฑ๊ณ์ ์ค์ฌ ์ขํ์ ๋ฐ์ง๋ฆ์ ์ ๋ ฅ๋ฐ์ต๋๋ค.
- ๊ฒฝ๊ณ ์ง์ /์ดํ ์ฌ๋ถ ํ๋จ: ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ด ๊ฐ ํ์ฑ๊ณ์ ๊ฒฝ๊ณ ๋ด๋ถ์ ์๋์ง ํ๋จํฉ๋๋ค.
- ์ง์ /์ดํ ํ์ ๊ณ์ฐ: ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ด ํ์ฑ๊ณ ๊ฒฝ๊ณ ๋ด๋ถ์ ์์นํ ๋๋ง ์ง์ ๋๋ ์ดํ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- ๊ฒฐ๊ณผ ์ถ๋ ฅ: ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ๊ณ์ฐ๋ ์ง์ /์ดํ ํ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ฝ๋
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๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ด ํ์ฑ๊ณ ๊ฒฝ๊ณ ๋ด๋ถ์ ์๋ก ๋ค๋ฅด๊ฒ ์์นํ ๋๋ง๋ค ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
- ๊ณ์ฐ๋ ์นด์ดํธ๋ฅผ ์ถ๋ ฅํ์ฌ ํ์ฑ๊ณ์ ๊ฒฝ๊ณ๋ฅผ ์ง๋๋ ์ต์ ํ์๋ฅผ ์ ์ํฉ๋๋ค.
์ฐธ๊ณ ํ ๋งํ ์๋ฃ
- ๊ธฐํํ์ ๊ณ์ฐ: ์ขํ์ ๋ฐ์ง๋ฆ์ ์ฌ์ฉํ ๊ธฐํํ์ ์์น ํ๋ณ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฃ์ ๋๋ค.
- ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ๋ฒ: Python์์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฃ์ ๋๋ค.
- ์ ์ถ๋ ฅ ๋ฐ ๋ฐ๋ณต๋ฌธ: Python์์ ํจ์จ์ ์ธ ์ ์ถ๋ ฅ๊ณผ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฃ์ ๋๋ค.
์ถ์ฒ ๋งํฌ:
- ๊ธฐํํ์ ๊ณ์ฐ ๊ธฐ์ด: Khan Academy - Basic Geometry
- Python ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ๋ฒ: W3Schools Python Conditions
- Python ์ ์ถ๋ ฅ ๋ฐ ๋ฐ๋ณต๋ฌธ: Python ๊ณต์ ๋ฌธ์
'์ฝ๋ฉํ ์คํธ(Baekjoon)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] Baekjoon 1006 : ์ต๊ฒฉ์ ์ด๋ผ๊ธฐ (1) | 2024.01.21 |
---|---|
[python] Baekjoon 1005 : ACM Craft (0) | 2024.01.21 |
[python] Baekjoon 1003 : ํผ๋ณด๋์น ํจ์ (0) | 2024.01.20 |
[python] Baekjoon 1002 : ํฐ๋ (0) | 2024.01.20 |
[python] Baekjoon 1001 : A-B (0) | 2024.01.20 |
๋๊ธ