Baekjoon

Baekjoon 1002번 터렛

ppwag 2020. 7. 20. 11:44

문제

https://www.acmicpc.net/problem/1002

걸린 시간

01 : 10 : 22

풀이

Python3

if __name__ == "__main__":
    # 테스트 케이스 수 : T
    T = int(input())

    # 결과값을 저장할 리스트
    result = []

    for i in range(0, T):
        # 조규현(x1, y1), 백승환(x2, y2)    
        # 각자의 위치에서 류재명과의 거리 r1, r2
        x1, y1, r1, x2, y2, r2 = map(int, input().split())

        # 둘 사이의 간격을 구한다.
        distance = ((x2 - x1)**2 + (y2 - y1)**2)**0.5

        # 만약 r1, r2 를 합친 값보다 둘 사이의 거리가
        # 길면
        if distance > r1 + r2:
            result.append(0)
        # 같으면
        elif distance == r1 + r2:
            result.append(1)
        # 짧으면
        else:
            # 한 반경 속에 다른 반경이 들어 있으면 
            if distance < abs(r1 - r2):
                # 두 좌표가 같으면
                if distance == 0:
                    # 반지름까지 같으면
                    if r1 == r2:
                        result.append(-1)
                    else:
                        result.append(0)
                else:
                    result.append(0)
            # 한 반경 속에 다른 반경이 접하면 
            elif distance == abs(r1 - r2):
                # 두 좌표가 같으면
                if distance == 0:
                    result.append(-1)
                else:
                    result.append(1)
            # 두 반경이 두점에서 만나면
            else:
                result.append(2)

    # 류재명이 있을 수 있는 위치의 수 출력
    for i in result:
        print(i)

귀찮다고 일부만 그림을 그린뒤 머리로만 생각하며 구현하다 한 경우의 수를 놓쳤고 결국 모든 케이스를 다시 그려 해결해야했다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 1966번 프린터 큐  (0) 2020.07.20
Baekjoon 1874번 스택 수열  (0) 2020.07.20
Baekjoon 10848번 큐  (0) 2020.07.19
Baekjoon 10828번 스택  (0) 2020.07.18
Baekjoon 18111번 마인크래프트  (0) 2020.07.18

댓글