백준 BaekJoon Online Judge // 4153

2021. 1. 23. 14:01Programming/BOJ

백준 알고리즘 BaekJoon Online Judge 4153번 "직각삼각형" 문제입니다.

while True:
  lst = list(map(int, input().split()))
  if lst[0] == 0 and lst[1] == 0 and lst[2] == 0:
    break
  else:
    lst.sort()
    if lst[2]**2 == lst[0]**2 + lst[1]**2:
      print("right")
    else:
      print("wrong")

세 수를 입력받고 그 수들을 변의 길이로 하는 삼각형이 직각삼각형인지 판별하는 문제다.

직각삼각형을 판별하는 가장 대표적인 방법은 피타고라스의 정리를 사용하는 것이다.

피타고라스의 정리란 삼각형의 세 변의 길이 a,b,c(a<=b<c)가 주어졌을 때, a^2 + b^2 = c^2을 만족하는 경우 그 삼각형은 직각삼각형이라고 하는 정리다.

하지만 세 수가 이쁘게 정렬되어서 입력되지는 않을 것이기 때문에 리스트로 입력받아서 정렬을 해주고 피타고라스의 정리를 사용한다.

0 0 0이 입력될 경우 종료가 되므로 0 0 0이 입력되었을 때 break문을 넣는 것도 빼먹어서는 안 된다.