1. 문제
https://www.acmicpc.net/problem/1004
1004번: 어린 왕자
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
import math
# n : 테스트케이스 수
n = int(input())
for i in range(n):
x1, y1, x2, y2 = map(int, input().split())
t = int(input())
eb_cnt = 0
for j in range(t):
cnt = 0
cx, cy, cr = map(int, input().split())
dis1 = math.sqrt(((cx - x1) ** 2) + ((cy - y1) ** 2))
if dis1 < cr:
cnt += 1
dis2 = math.sqrt(((cx - x2) ** 2) + ((cy - y2) ** 2))
if dis2 < cr:
cnt += 1
if cnt == 1:
eb_cnt += 1
print(eb_cnt)
3. 후기
- 이번 문제도 지난 번에 해결했던 문제와 같이 두 좌표의 길이를 제곱을 통해 구한 뒤 반지름 보다 짧은지 긴지를 판단하여 행성계 진입/이탈 횟수를 확인하였다.
문제를 풀며 우주 공학자들도 비슷한 문제를 해결하기 위해 이와 같은 프로그래밍을 하고 있지 않을까 생각해봤다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 선물(1166) (0) | 2023.01.28 |
---|---|
(Python)백준 코딩테스트 연습 - 게임(1072) (1) | 2023.01.26 |
(Python)백준 코딩테스트 연습 - 피보나치 함수(1003) (0) | 2023.01.23 |
(Python)백준 코딩테스트 연습 - 터렛(1002) (0) | 2023.01.22 |
(Python)백준 코딩테스트 연습 - 좋은 단어(3986) (0) | 2023.01.21 |