문제
https://www.acmicpc.net/problem/4153
피타고라스 정리가 성립하는 지 확인하면 되는 매우 간단한 문제. 간단한데 정답률이 51%밖에 안 되는 이유는 아래에 서술하도록 하겠음
풀이
피타고라스의 정리는 다들 아시겠지만
이거다. 아니 공식도 간단하겠다 파이썬에서 제곱이 **인 것만 알면 되겠다(참고로 ^은 XOR이다)…
import sys
a,b,c=map(int,sys.stdin.readline().split())
while (a != 0 and b != 0 and c != 0):
if a ** 2 + b ** 2 == c ** 2:
print("right")
else:
print("wrong")
a,b,c=map(int,sys.stdin.readline().split())
그럼 이거 내면 되는 거 아니냐? 아뇨 내가 그거 냈다가 틀렸어요… 뭐야 왜 틀려요? 왜는 왜야… 저거 꼭 세번째로 입력하는 게 빗변일거라는 보장 있음? 그래서 입력받고 정렬을 한번 한 다음 들어가야 한다.
import sys
while True:
byeon = list(map(int,sys.stdin.readline().split()))
if sum(byeon) == 0:
break
byeon.sort()
if byeon[0] ** 2 + byeon[1] ** 2 == byeon[2] ** 2:
print("right")
else:
print("wrong")
파이썬 리스트는 리스트 개별 인덱싱을 통해 0번째 1번째 이런 식으로 끌고 와서 계산하는 게 가능하다. 그래서 입력받고 한번 정렬해 준 다음 로직을 들어가면 된다. 정렬을 해 주게 되면 빗변이 맨 마지막이그덩.
응용편-삼각형 판별하기
사실 피타고라스의 정리를 이용하면 예각삼각형인지 둔각삼각형인지도 알 수 있다. 위에서 a^2+b^2=c^2 면 직각삼각형이라고 했는데 둔각삼각형은 c^2가 a^2+b^2보다 크고 예각삼각형은 그 반대이기 때문.
import sys
while True:
byeon = list(map(int,sys.stdin.readline().split()))
if sum(byeon) == 0:
break
byeon.sort()
if byeon[0] ** 2 + byeon[1] ** 2 == byeon[2] ** 2:
print("직각삼각형")
elif byeon[0] ** 2 + byeon[1] ** 2 < byeon[2] ** 2:
print("둔각삼각형")
else:
print("예각삼각형")
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 2447번 풀이 (0) | 2022.08.19 |
---|---|
백준 17478번 풀이 (0) | 2022.08.19 |
백준 1002번 풀이 (0) | 2022.08.19 |
백준 10870번 풀이 (0) | 2022.08.19 |
백준 10872번 풀이 (0) | 2022.08.19 |