[파이썬][백준 4153번] 직각삼각형
1. 문제Permalink
[Bronze III] 직각삼각형 - 4153Permalink
성능 요약Permalink
메모리: 32972 KB, 시간: 72 ms
분류Permalink
기하학(geometry), 수학(math), 피타고라스 정리(pythagoras)
문제 설명Permalink
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
입력Permalink
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
출력Permalink
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
출처: 백준, https://https://www.acmicpc.net/
2. 해결방법 시간복잡도Permalink
- 피타고라스 정리 O(N)
3. 문제 해결 및 코드Permalink
import math # 제곱 사용을 위해 math 라이브러리 불러오기 | |
while True: | |
a, b, c = map(int, input().split()) | |
if a != 0 and b != 0 and c != 0: # 모든 값이 0 0 0 이 아니라면 | |
if math.pow(a, 2) + math.pow(b, 2) == math.pow(c, 2): # 피타고라스 정리 a^2 + b^2 = c^2 | |
print('right') | |
elif math.pow(b, 2) + math.pow(c, 2) == math.pow(a, 2): # 피타고라스 정리 b^2 + c^2 = a^2 | |
print('right') | |
elif math.pow(a, 2) + math.pow(c, 2) == math.pow(b, 2): # 피타고라스 정리 a^2 + c^2 = b^2 | |
print('right') | |
else: | |
print('wrong') | |
else: | |
break |
-
주석을 참고하면서 이해를 돕습니다.Permalink
4. 알고리즘 및 해설Permalink
- math라이브러리를 통해서 간단하게 문제를 해결한다.
- 피타고라스 정리인 두 변의 제곱의 합을 알면 나머지 변의 길이를 알 수 있다.
- 이 공식을 응용해서 3가지 경우의 수를 계산하여 직각 삼각형이 맞다면 right을 아니라면 wrong을 출력한다.