728x90
📌문제 출처
백준 단계별 문제풀이 : 기하2
https://www.acmicpc.net/problem/7869
❓ 문제
📗 풀이 코드
'''
제 2 코사인 법칙을 활용해 각도를 구해서 넓이를 구하는데 사용
'''
from math import dist, pi, acos, sin
input = open(0).readline
def solution():
x1, y1, r1, x2, y2, r2 = map(float, input().split())
if (x1-x2)**2 + (y1-y2)**2 >= (r1+r2)**2: # 겹치지 않는 경우(계산 편의상 거리의 제곱끼리 비교)
print('0.000') # 문자열이 아닌 실수 형태는 오답 처리
else:
d = dist((x1, y1),(x2, y2)) # 두 원의 중심 간 거리를 구하는 함수 사용
if d <= abs(r1-r2): # 완전히 겹치는 경우
result = pi*min(r1,r2)**2
else: # 일부만 겹치는 경우
theta1 = 2*acos((r1*r1+d*d-r2*r2)/(2*r1*d))
theta2 = 2*acos((r2*r2+d*d-r1*r1)/(2*r2*d))
result = r1*r1*(theta1-sin(theta1))/2 + r2*r2*(theta2-sin(theta2))/2
print(f'{round(result, 3):.3f}')
if __name__ == '__main__':
solution()
✍ 상세한 풀이
'파이썬 문제풀이' 카테고리의 다른 글
[백준 파이썬] 11723 집합 (1) | 2024.01.10 |
---|---|
[백준 파이썬] 1069 집으로 (0) | 2024.01.09 |
[백준 파이썬] 17387 선분 교차 2 (1) | 2024.01.09 |
[백준 파이썬] 17386 선분 교차 1 (0) | 2024.01.09 |
[백준 파이썬] 2166 다각형의 면적 (1) | 2024.01.09 |