백준 문제풀이

[백준 4153번 문제] 직각삼각형

eunda_coding 2022. 8. 12. 16:55

이 문제는 세 변의 길이를 입력받아서 직각삼각형인지 아닌지 판별하는 문제이다.

문제를 풀기위해서는 직각삼각형을 만족하는 조건을 알아야하는데 바로 피타고라스의 정리이다.

 
피타고라스의 정리

가장 긴 변의 제곱은 나머지 두변의 제곱의 합과 같다는 원리이다.

위의 공식을 이용해서 먼저 세 변의 길이를 입력받아서 리스트에 저장해주었다.

그리고 sort() 함수를 이용해서 오름차순으로 정렬한 후에 조건문을 통해 결과값을 출력해 주었다.

 

입력값이  0 0 0인 경우에는 프로그램을 종료해야 하므로 while 반복문안에 조건문을 넣어주어서 리스트안의 값이 0만 존재하는 경우에는 break를 통해 반복문을 탈출하도록 구현하였다.

import sys

input = sys.stdin.readline

while(True):
    triangle = list(map(int, input().split(' ')))
    triangle.sort()

    if set(triangle) == {0}:
        break
    elif (triangle[2]**2 == triangle[0]**2 + triangle[1]**2):
        print("right")
    else:
        print("wrong")

 

이 문제를 풀고 나서 다른 사람들은 어떻게 풀었는 지 궁금해서 구글링을 해보았는데

max 함수를 이용해서 다른 변수에 max값을 저장하고 remove메소드를 하여 리스트에서 가장 큰 값을 삭제하고 제곱을 더해준 경우도 있었다.

 

그리고 0 0 0이 입력된 경우에도 다른 예제를 보았더니 sum함수를 이용해서 3개의 값이 0이면 break문을 통해 탈출하는 방법도 있었다.