알고리즘 연습/수학, 정수론, 기하

[백준 4153] 기본 수학 2 - 직각삼각형

김세진 2021. 5. 30. 20:56
반응형

문제

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

입력

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

출력

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

 

예제 입력

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

예제 출력

right
wrong
right

 

 

풀이

 

흔히 알려진 피타고라스의 공식을 이용하면 되는 문제이다.

 

x^2 + y^2 = z^2 라는 공식이 성립하면 right, 아니면 wrong을 출력한다.

 

다만, 예제 입력에서 작은 순서대로 입력이 돼 있어서

 

조건에 있지는 않지만 세 번째에 빗변의 길이가 입력되는 줄 알았더니

 

그건 아닌 것 같다. 따라서 변의 길이가 순서 없이 들어와도

 

빗변만 따로 빼 주는 처리가 필요하다.

 

while(True):
    a = list(map(int, input().split()))
    z = max(a)
    a.remove(max(a))
    x=a[0]; y=a[1]		# 빗변 외엔 순서가 상관 없다.
    if x==0 and y==0 and z==0:
        break
    elif x**2 + y**2 == z**2:
        print("right")
    else:
        print("wrong")
반응형