백준 알고리즘 1002번: 터렛 파이썬 코드 <문제풀이>
2020. 7. 14. 21:27ㆍ알고리즘 문제풀이
반응형
문제 출처 : https://www.acmicpc.net/problem/1002
문제요약 :
두 좌표(A,B)와 해당 좌표의 거리(C)가 주어질 때 가능한 좌표(D)의 수를 출력하는 프로그램 작성
두 원의 위치관계를 이해하고 있는가를 판단 할 수 있는 문제
풀이 :
두 원의 위치관계의 개념을 이해하고 조건문으로 분기하는 것이 중요했습니다.
크게 보면 네 가지 경우가 존재합니다
첫 번째 경우 : 두 원이 접하지 않는 경우
두 번째 경우 : 두 원이 한 점에서 접하는 경우
세 번째 경우 : 두 원이 두 점에서 접하는 경우
네 번째 경우 : 두 원이 일치하는 경우
더 자세한 개념은 https://mathbang.net/101 를 참고하세요
두 좌표의 거리를 계산한다.
좌표평면 상에서의 두 좌표의 거리는 https://mathbang.net/138 를 참고하세요
math 라이브러리를 사용하지 않으려고 내장함수 pow를 pow(A,0.5)같은 방식으로 계산을 진행했습니다.
def turret(x1,y1,r1,x2,y2,r2):
dist = pow( ( (x1-x2)**2 + (y1-y2)**2 ), 0.5 )
temp=r1+r2
temp2=abs(r1-r2)
if (dist == 0) :
if (temp2 == 0):
return -1
else:
return 0
elif (dist == temp or dist == temp2):
return 1
elif (temp2 < dist and dist < temp):
return 2
else:
return 0
testcase=int(input())
for i in range(testcase):
a,b,c,d,e,f = map(int, input().split())
print(turret(a,b,c,d,e,f))
두 원의 위치관계만 숙지하고 있으면 어렵지 않은 문제인데 조건식이 여러개다 보니 논리적 오류가 군데군데서 발생해서 몇 시간 헤맨 것 같습니다. 코딩 초보자라서 보시기에 코드가 그리 예쁘지는 않겠지만 질문이나 오류 지적할 게 보이신다면 의견 남겨주시면 감사하겠습니다.
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
백준 알고리즘 15787번 : 기차가 어둠을 헤치고 은하수를 파이썬 코드 <문제풀이> (0) | 2022.03.09 |
---|---|
백준 알고리즘 11660번 : 구간 합 구하기 5 파이썬 코드 <문제풀이> (0) | 2022.03.06 |
백준 알고리즘 2512번 : 예산 파이썬 코드 <문제풀이> (0) | 2022.03.03 |
백준 알고리즘 11724번:연결 요소의 개수 파이썬 코드 <문제풀이> (0) | 2022.03.02 |
백준 알고리즘 20055번: 컨베이어 벨트 위의 로봇 파이썬 코드 <문제풀이> (0) | 2022.03.01 |