[알고리즘 연습]-터렛(python)

이준명·2021년 4월 17일
0

365-알고리즘

목록 보기
5/12
post-thumbnail

1. 문제링크

[터렛] : https://www.acmicpc.net/problem/1002

2. 풀이 전 생각

문제를 읽으면서 위치를 어떻게 예상하는지 좌표를 직접 그리면서 생각해보았다. 주어진 두 거리를 이용하는 것은 알겠는데 위치에 대한 정보를 어떻게 알 수 있을까에 대한 고민을 했던 것 같다. 구글링을 통해 거리에 대한 원을 그려 만나는 교점이 위치의 개수라는 것을 알아냈다.

3. 풀이

t = int(input())
result = 0
for i in range(t):
    x1, y1, r1, x2, y2, r2 = map(int,input().split())
    m_x = x1 - x2
    m_y = y1 - y2
    d = (m_x**2 + m_y**2)**0.5
    if x1 == x2 and y1 == y2:
        if r1 == r2:
            result = -1
        else:
            result = 0
    if r1+r2 < d or r1-r2 > d:
        result = 0
    elif r1+r2 == d or r1-r2 == d:
        result = 1
    elif r1-r2 < d < r1+r2 and x1 != x2 or y1 != y2:
        result = 2
    print(result)

두 원의 중심사이의 거리를 구한다음 반지름과 중심거리의 관계를 조건으로 쓰면서 두 원이 만나는 교점을 반환해준다.

4. 풀이하면서 고민했던 점

해결과정에서 예외적으로 조건을 두가지를 다 만족하여 결과값이 두개로 나왔는데, 이를 매끄럽게 해결하진 못한 것 같다. 더 나은 조건이 있다면 수정할 계획이다.

5. 문제를 풀고 난 소감

문제를 풀고나면 뿌듯하고, 다음 문제를 빨리 풀고 싶은 생각이 든다.

profile
조금씩 나아가기

0개의 댓글