본문 바로가기
Problem Solving/BOJ

[BOJ][Python]1002 풀이

by NoiB 2021. 12. 30.
반응형

사실 이 문제는 저도 상당히 예전에 풀었던 문제라 잘 기억이 안나는데요. 천천히 같이 가봅시다.

 

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

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

코드 : 

import sys

def find_number_of_circle_intersection_point(x1,y1,r1,x2,y2,r2):
    center_to_center_distatnce = ((x2-x1)**2+(y2-y1)**2)**(1/2)
    r_list = [r1,r2]
    r_list = sorted(r_list)
    r_list.append(center_to_center_distatnce)
    if center_to_center_distatnce==0 and r_list[0]==r_list[1]:
        return -1
    elif sorted(r_list)[2]==sorted(r_list)[0]+sorted(r_list)[1]:
        return 1
    elif sorted(r_list)[2]>sorted(r_list)[0]+sorted(r_list)[1]:
        return 0
    else:
        return 2

T = int(input())
for i in range(T):
    x1,y1,r1,x2,y2,r2 = map(int, sys.stdin.readline().split())
    print(find_number_of_circle_intersection_point(x1,y1,r1,x2,y2,r2))
    #test

예전에는 되게 함수나 변수등의 이름을 최대한 자세하게 쓰려고 노력을 했던 기억이 납니다. 이제는 뭐 그냥 문제풀이다 보니 백준 문제 풀 때는 그다지 신경쓰지 않는 편인데요. 해당 문제는 여러 좌표를 받아서 거리를 재고 반지름과 거리에 따라 교점의 갯수를 출력하면 되는 문제입니다. 제가 처음에 생각했던 풀이는 원의 방정식을 이용해서 교점을 구해서 갯수를 출력하는 방식이었는데 시간복잡도에 걸려서 한동안 고민했던 기억이 나네요.

 

추가// 현재 1002문제의 재채점 때문에 풀이를 확인하러 오시는 분들이 많으신 것 같습니다. 올라오는 글들을 읽어보면 아직 수정 중에 있는 것 같아 해당 이슈가 완전히 해결되면 풀이를 수정하고자 합니다. 조금만 더 기다려주세요.

 

추가// 현재 문제 자체의 오류가 있어 r1이 0인 경우 무조건 답을 1을 출력하도록 예외처리를 해주어야 한다고 합니다. 아마 완전히 오류가 고쳐지면 원래 푸셨던 분들도 지금 풀면서 통과가 안되시던 분들도 다 통과가 될 것 같으니 이 친구는 잠시 치워두고 다른 것 부터 푸시면 될 것 같습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]백준 1874 풀이  (0) 2022.02.15
[BOJ][Python]백준 1654 풀이  (0) 2022.02.15
[BOJ][Python]백준 11866 풀이  (0) 2021.12.29
[BOJ][Python]11050번 풀이  (0) 2021.12.29