[Baekjoon 문제풀이] 4153 - 직각삼각형 (Python 3)

728x90
반응형

etc-image-0
Baekjoon 문제풀이

서론

본 포스팅 시리즈는 필자가 Baekjoon 문제를 풀면서 정리한 코드나 이론을 올리는 포스팅이다.
대부분의 설명은 코드의 주석으로 기재되어있으니 참고바란다.

문제

Baekjoon 4153번 - 직각삼각형:
https://www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net

해법

이번 문제는 피타고라스의 정리를 이용하면 간단하게 해결할 수 있다. 테스트 케이스의 입력을 받은 후, 받은 수 중 가장 큰 값의 제곱이 나머지 두 수를 각각 제곱한 후 더한 값과 같다면 "right"를 출력하고 아니면 "wrong"을 출력하면 된다.

풀이

'''
No: 4153
Title: 직각삼각형
Problem:
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다.
주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
Input:
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다.
각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
Output:
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
Lang:
Python 3
Explanation:
피타고라스의 정리를 이용해 주어진 세 값 중 가장 큰 값의 제곱이 나머지 두 값을 각각 제곱한 후 더한 값과 같으면 "right", 아니면 "wrong"을 출력
'''
while True:
n = list(map(int, input().split())) # 테스트케이스 표준 입력 처리
n.sort() # 입력을 크기순으로 정렬
if n[0] == 0 and n[1] == 0 and n[2] == 0: # 종료 케이스
break
elif n[0]**2+n[1]**2 == n[2]**2: # 직각삼각형일 경우 - 가장큰 수의 제곱이 나머지 두 값을 각각 제곱한 후 더한 값과 같은지 검사
print('right')
else: # 직각삼각형이 아닐 경우
print('wrong')
view raw 4153.py hosted with ❤ by GitHub

참고자료

위키피디아 - 피타고라스의 정리:
https://ko.wikipedia.org/wiki/%ED%94%BC%ED%83%80%EA%B3%A0%EB%9D%BC%EC%8A%A4_%EC%A0%95%EB%A6%AC

 

피타고라스 정리 - 위키백과, 우리 모두의 백과사전

피타고라스 정리: 두 직각변에 얹힌 두 정사각형의 넓이의 합은 빗변에 얹힌 정사각형의 넓이와 같다. 기하학에서, 피타고라스 정리(문화어: 세 평방의 정리, 영어: Pythagorean theorem, Pythagoras's theor

ko.wikipedia.org

728x90
반응형