본문 바로가기
Programming/알고리즘

[백준 / Python] 1925번 삼각형

by castberry_ 2023. 2. 1.
반응형

 

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

 

1925번: 삼각형

평면상에 세 개의 점이 주어지면, 그 세 점으로 이루어지는 삼각형은 유일하게 결정된다. 또는, 삼각형이 이루어지지 않기도 한다. 세 점의 좌표가 주어졌을 때 다음에 따라 이 삼각형의 종류를

www.acmicpc.net


예제1

입력

0 0
-3 -3
-3 0

출력 

Jikkak2Triangle

예제2

입력

1 1
0 0
2 100

출력 

DunkakTriangle

예제3

입력

10000 10000
2580 2580
-10000 -10000

 

출력 

X

반응형

a1, a2 = map(int, input().split())
b1, b2 = map(int, input().split())
c1, c2 = map(int, input().split())
#x y 
#x y 
#x y
l1 = (a1 - b1) ** 2 + (a2 - b2) ** 2
l2 = (c1 - b1) ** 2 + (c2 - b2) ** 2
l3 = (a1 - c1) ** 2 + (a2 - c2) ** 2

l123 = list((l1, l2, l3))
l123.sort()
x1, x2, x3 = a1, b1, c1 
y1, y2, y3 = a2, b2, c2 

s = (x1 * y2 + x2 * y3 + x3 * y1) - (x1 * y3 + x3 * y2 + x2 * y1)
if a1 == b1 == c1 or a2 == b2 == c2 or s == 0:
    print("X")
elif (a1 - b1) ** 2 + (a2 - b2) ** 2 == (c1 - b1) ** 2 + (c2 - b2) ** 2 == (a1 - c1) ** 2 + (a2 - c2) ** 2:
    print("JungTriangle")
elif l1 == l2 or l2 == l3 or l3 == l1:
    if l123[2] == l123[0] + l123[1]:
        print("Jikkak2Triangle")
    elif l123[2] > l123[1] + l123[0]:
        print("Dunkak2Triangle")
    else:
        print("Yeahkak2Triangle")
else:
    if l123[2] == l123[0] + l123[1]:
        print("JikkakTriangle")
    elif l123[2] > l123[1] + l123[0]:
        print("DunkakTriangle")
    else:
        print("YeahkakTriangle")

3개의 좌표가 일직선인지 구분만 하면 나머지는 분기만 나누면 되는 문제여서 어렵지는 않다.

 

 신발끈 공식이라고 불리는 위의 공식으로 삼각형의 넓이가 0이라면 3개의 좌표가 일직선이라고 판단하는 코드를 작성했다. 

 

반응형

댓글