BOJ - 직각삼각형(Python)

5516 단어 백준백준

문제

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

입력

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

출력

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

예제 입력

예제 출력

✍ 코드

while 1:
    # (1)
    a, b, c = map(int, input().split())

    # (2)
    if a == 0 and b == 0 and c == 0:
        break

    # (3)
    list_value = []

    # (4)
    list_value.append(a)
    list_value.append(b)
    list_value.append(c)

    # (5)
    list_value = sorted(list_value)

    # (6)
    pow_1 = pow(list_value[0], 2)
    pow_2 = pow(list_value[1], 2)
    pow_3 = pow(list_value[2], 2)

    # (7)
    if pow_3 == pow_1 + pow_2:
        print("right")

    else:
        print("wrong")

(1) : a, b, c 변수에 입력
(2) : while문 종료 조건
(3) : list_value라는 리스트 생성
(4) : a, b, c를 차례대로 list_value에 append하기
(5)

  • list_value 오름차순 정렬
  • 그렇게 하는 이유는 a b c 순대로 정렬되어 있다는 보장이 없기 때문
  • 왜 이렇게 해야 하는지는 직각삼각형의 원리를 보면 이해할 수 있음

(6)

  • 각 list_value의 요소 제곱한 것을 pow_1 ~ pow_3에 차례대로 할당
  • 참고로 list_value[2]가 입력 요소 중 가장 큰 값에 해당

(7)

  • 직각삼각형의 공식은 (대각선의 길이의 제곱) = (가로의 제곱) + (세로의 제곱)이기 때문에, 해당 공식에 부합하면 right를, 그렇지 않은 경우에는 wrong을 출력

📝 결과

😃 느낀점

  • 초등학교 또는 중학교 때 배웠던 직각삼각형 공식이 생각이 났다. 이걸 아직까지 기억한 것이 더 신기했다. (대각선의 길이의 제곱) = (가로의 제곱) + (세로의 제곱) 공식을 기억할 수 있었기에 이 문제를 풀 수 있었다.

👍 Irish의 모든 코드 보기

-> Irish Github

좋은 웹페이지 즐겨찾기