이 문제는 세 변의 길이를 입력받아서 직각삼각형인지 아닌지 판별하는 문제이다.
문제를 풀기위해서는 직각삼각형을 만족하는 조건을 알아야하는데 바로 피타고라스의 정리이다.

가장 긴 변의 제곱은 나머지 두변의 제곱의 합과 같다는 원리이다.
위의 공식을 이용해서 먼저 세 변의 길이를 입력받아서 리스트에 저장해주었다.
그리고 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문을 통해 탈출하는 방법도 있었다.
'백준 문제풀이' 카테고리의 다른 글
[백준 2477번 문제] 참외밭 (0) | 2022.08.19 |
---|---|
[백준 10814번 문제] 나이순 정렬 (0) | 2022.08.13 |
[백준 3009번 문제] 네 번째 점 (0) | 2022.08.11 |
[백준 1427번 문제] 소트인사이드 (0) | 2022.08.10 |
[백준 25305번 문제] 커트라인 (0) | 2022.08.09 |