1. 스터디 범위
1) 범위
기하 1 - 3문제
2. 스터디 내용
1) 1002. 터렛
- 두 좌표 사이의 거리를 구하는 공식을 이용한다.
- 4가지 조건으로 나누어서 계산을 한다.
1) 두 원이 겹치는 경우(무한대 : -1)
- 두 좌표 사이의 거리가 0이며, 반지름이 같음
2) 접점이 0인 경우(두 원이 만나지 않는 경우)
- 내부에서 안 만나는 경우 : 두 반지름의 차이가 두 좌표 사이의 거리보다 클 때
- 외부에서 안 만나는 경우 : 반지름의 합이 두 좌표 사이의 거리보 작을 때
3) 접점이 1개인 경우
- 외접 : 반지름의 합이 두 좌표사이의 거리와 같을 때
- 내접 : 두 반지름의 차이가 두 좌표 사이의 거리와 같을 때
4) 접점이 2개인 경우
- 좌표 사이의 거리가 두 반지름의 합보다는 작고 차이보다는 클 때
import math
T = int(input())
for _ in range(T):
x1, y1, r1, x2, y2, r2 = list(map(int, input().split()))
# 두 원의 중심 사이의 거리
dis = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
if dis == 0: # 1) 두 원의 중심이 같을 경우
if r1 == r2: # 두 원의 크기가 같아 겹치는 경우 : 무한대
print(-1)
else: # 한 원이 다른 원 안에 들어가 있는 경우
print(0)
else: # 두 원의 중심이 다를 경우
if r1+r2 == dis or abs(r2-r1) == dis: # 3) 외접, 내접할 때는 1
print(1)
elif ((abs(r1-r2) < dis) and (dis < r1+r2)): # 4) 접점이 2개인 경우
print(2)
else: # 2) 안 겹칠 때
print(0)
2) 1004. 어린왕자
-
총 진입/이탈 횟수 구하기
1) 출발점과 도착점이 모두 행성 내부에 위치한 경우, 총 진입/이탈 횟수는 0
- 두 점과 행성 중심과의 거리가 동시에 행성의 반지름보다 작은 경우
2) 출발점이나 도착점이 행성 내부에 위치한 경우, 총 진입/이탈 횟수 추가
- 둘 중 하나만 작은 경우
T = int(input())
for _ in range(T):
x1, y1, x2, y2 = list(map(int, input().split())) # 출발점 도착점
n = int(input()) # 행성의 개수 n
count = 0 # 진입/이탈은 count로
for _ in range(n):
cx, cy, cr = map(int, input().split())
dis1 = (x1 - cx)**2 + (y1 - cy)**2 # 루트 대신 반지름에 제곱
dis2 = (x2 - cx)**2 + (y2 - cy)**2
p_cr = cr**2
if p_cr > dis1 and p_cr > dis2: # 시작점, 도착점 동시에 안에 있는 경우, 패스
pass
elif p_cr > dis1: # 시작점이 안에 있는 경우
count += 1
elif p_cr > dis2: # 도착점이 안에 있는 경우
count += 1
print(count)
3) 1358. 아이스하키
1) 가운데 직사각형에 있을 경우
2) 왼쪽 반원에 있을 경우
3) 오른쪽 반원에 있을 경우
W, H, X, Y, P = map(int, input().split())
count = 0
for _ in range(P):
x, y = map(int, input().split()) #선수 수만큼 좌표 받기
if (X <= x <= X+W) and (Y <= y <= Y+H): # 가운데 직사각형에 있는 경우(둘레 포함)
count +=1
continue
R = H/2
d1 = ((x-X)**2 + (y-(Y+R))**2)**0.5 # 왼쪽 반원 꼭지점과 거리
d2 = ((x-(X+W))**2 + (y-(Y+R))**2)**0.5 # 오른쪽 반원 꼭지점과 거리
if d1 <= R or d2 <= R: # 거리가 반지름보다 작으면 count +1
count += 1
print(count)
'스터디' 카테고리의 다른 글
[스터디 후기] 6주차. 백준 문제 및 조별 과제 토의 (0) | 2022.07.19 |
---|---|
[스터디 후기] 4주차. 백준 문제 및 조별 과제 토의 (0) | 2022.07.04 |
[스터디 후기] 3주차. 백준 문제 및 조별 과제 토의 (0) | 2022.06.27 |
[스터디 후기] 1. 코딩테스트_1 & EDA 과제_2 (0) | 2022.06.19 |
[스터디 후기] 0. 아이스 브레이킹 (0) | 2022.06.12 |