알고리즘/문제풀이

백준 4153번 직각삼각형 - Python

불꽃개발자 2023. 2. 17. 19:08

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

예제 입력 1 

6 8 10
25 52 60
5 12 13
0 0 0

예제 출력 1 

right
wrong
right

 위 문제는 사실 중고등학교 시절 배우던 피타고라스의 정리를 알고 있느냐를 물어보는 것 같았습니다

이 문제에서 맨 마지막 숫자가 가장 큰 숫자라거나 하는 표현을 하지는 않았기에 5 2 3 으로 주어질 수도 있는 거라고 생각을 했습니다 그래서 미리 데이터를 정렬 처리해주는 것이 필요하다고 생각을 하였고 a ,b라는 두 변과 c라는 대각선에 대하여  a**2 + b**2 = c**2를 하면 된다고 생각했습니다  풀이는 다음과 같습니다

while True:
    a,b,c = map(int, input().split())
    if a == 0 and b == 0 and c == 0:
        break
    p = [a,b,c]
    p.sort() # a,b,c를 정렬하여 맨 마지막 인덱스가 대각선, 나머지 인덱스는 두 변의 길이 값을 저장
    if p[-1] ** 2 == p[0]**2 + p[1]**2 :
        print('right')
    else:
        print('wrong')