
서론
본 포스팅 시리즈는 필자가 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') |
참고자료
위키피디아 - 피타고라스의 정리:
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
'SW > Baekjoon' 카테고리의 다른 글
[Baekjoon 문제풀이] 1011 - Fly me to the Alpha Centauri (Python 3) (0) | 2022.01.06 |
---|---|
[Baekjoon 문제풀이] 11653 - 소인수분해 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 9461 - 파도반 수열 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 2748 - 피보나치 수 2 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 2581 - 소수 (Python 3) (0) | 2022.01.04 |