1週間に5回(タレット)
12820 ワード
1.問題リンク
https://www.acmicpc.net/problem/1002
2.試合前の計画と考え方
2-1. ソリューション
中心が同時に
会える人数は2です.
会う機会がない.
2-2. に答える
Before Refactoring
# x1 y1
# x2 y2
# x1 y1에 대한 거리 r1
# x2 y2에 대한 거리 r2
# 가능한 x y 좌표의 수
#각 테스트케이스마다 x,y의 경우의 수 출력
#무한대일 경우에는 -1
import sys
Test_case = int(sys.stdin.readline())
for i in range(Test_case):
x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
length_between_center_of_circle = ((x1 - x2)**2 + (y1 - y2)**2)**0.5
inner_contact_distance = abs(r1 - r2)
outer_contact_distance = abs(r1 + r2)
# 중심이 같을때 (서로 같은 원일때/ 다른원일때)
if x1 == x2 and y1 == y2:
if r1 == r2:
print(-1)
else:
print(0)
# 중심이 다를때 (내접/외접/두 지점이 만날때/만나지않을때)
else:
if length_between_center_of_circle == inner_contact_distance:
print(1)
elif length_between_center_of_circle == outer_contact_distance:
print(1)
elif length_between_center_of_circle > inner_contact_distance:
print(2)
elif length_between_center_of_circle > outer_contact_distance:
print(0)
After Refactoring関数宣言後、行の数値を入力して関数を呼び出し、結果を出力します.
# x1 y1
# x2 y2
# x1 y1에 대한 거리 r1
# x2 y2에 대한 거리 r2
# 가능한 x y 좌표의 수
#각 테스트케이스마다 x,y의 경우의 수 출력
#무한대일 경우에는 -1
import sys
Test_case = int(sys.stdin.readline())
def get_result(length_between_center_of_circle, inner_contact_distance, outer_contact_distance, x1, x2, y1, y2, r1, r2):
# 중심이 같을때 (서로 같은 원일때/ 다른원일때)
if x1 == x2 and y1 == y2:
if r1 == r2:
return -1
else:
return 0
# 중심이 다를때 (내접/외접/두 지점이 만날때/만나지않을때)
else:
if length_between_center_of_circle == inner_contact_distance:
return 1
elif length_between_center_of_circle == outer_contact_distance:
return 1
elif length_between_center_of_circle > inner_contact_distance:
return 2
elif length_between_center_of_circle > outer_contact_distance:
return 0
for i in range(Test_case):
x1, y1, r1, x2, y2, r2 = map(int, sys.stdin.readline().split())
length_between_center_of_circle = ((x1 - x2)**2 + (y1 - y2)**2)**0.5
inner_contact_distance = abs(r1 - r2)
outer_contact_distance = abs(r1 + r2)
print(get_result(length_between_center_of_circle, inner_contact_distance, outer_contact_distance, x1, x2, y1, y2, r1, r2))
4.説明しながら悩むところ
実現ロジックが書かれていると、長い時間がかかると
異なる論理を大胆に実施する
アルゴリズムの実装に時間がかかりすぎる
別の方向に考えることも大切だが、時間を節約することも大切だ.
10分ほど考えて、実現アルゴリズムの練習に励みましょう.
5.参考サイト
https://dongyeopblog.wordpress.com/2016/02/05/python-%EC%A0%9C%EA%B3%B1%EA%B3%BC-%EB%A3%A8%ED%8A%B8-%EA%B5%AC%ED%95%98%EA%B8%B0/
https://blockdmask.tistory.com/380
5. remind
코드에 대한 이해가 우선이다. sugar syntax보다는 sugar logic!
Reference
この問題について(1週間に5回(タレット)), 我々は、より多くの情報をここで見つけました https://velog.io/@gyrbs22/1주차-5번터렛テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol