개발 연습장/백준 문제풀이

[파이썬, Python] 백준 4153: 직각삼각형

LooanCheong 2023. 2. 10. 11:25
반응형

문제

https://www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net

코드

while True:
    nums = list(map(int, input().split()))
    
    if sum(nums) == 0:
        break
    max_num = max(nums)
    nums.remove(max(nums))
    
    if nums[0]**2 + nums[1]**2 == max_num**2:
        print("right")
    else:
        print("wrong")

설명

직각 삼각형의 변의 길이는 피타고라스의 정리를 이용하여 구할 수 있다.

삼각형의 직각을 이루는 변의 각 길이의 제곱을 더하면 나머지 변의 길이의 제곱과 동일한 값이 나오게 된다.
Ex) 3,4,5의 변의 길이의 경우 3**2 + 4**2 = 5**2 -> 직각 삼각형

우선 입력이 0 0 0 이 아닌 경우 무한하게 지속되어야 하므로 while 문으로 무한 루프를 돌려주고,
숫자의 합이 0이라면 세 숫자 모두 0이 입력되었으므로, 반복문을 종료한다.

그렇지 않은 경우에는 숫자 중 가장 큰 수의 값을 제곱한 수가 나머지 두 수를 각각 제곱한 값의 합과 같으면,
right를 출력하고 아니면 wrong를 출력한다.

반응형