deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩
  • 함수
  • 부트캠프
  • 소인수분해
  • 빅데이터
  • matplotlib
  • 계차수열
  • 마이데이터
  • 팩토리얼
  • SQL
  • 제로베이스
  • 계산기
  • BMI
  • 네카라쿠배
  • 릿코드
  • 데이터분석
  • 통계
  • 모듈
  • 군수열
  • 데이터엔지니어
  • 최소공배수
  • 데이터사이언티스트
  • 미니콘다
  • 데이터분석가
  • 등차수열
  • 등비수열
  • 기초수학
  • 파이썬
  • pandas
  • 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

스터디

[스터디 후기] 5주차. 백준 문제 및 조별 과제 토의

2022. 7. 11. 13:01

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
    '스터디' 카테고리의 다른 글
    • [스터디 후기] 6주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 4주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 3주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 1. 코딩테스트_1 & EDA 과제_2
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바