반응형
1) 사이트
2) 문제
이 문제는 세 변의 길이가 주어졌을 때 만들 수 있는 삼각형이 직각 삼각형인지를 판별하는 문제이다.
직각 삼각형을 판별하는 기준은 세 변 a,b,c 가 있을 때 a^2+b^2=c^2이 성립하면 직각 삼각형이라고 한다.
물론 c라는 변은 세 변 중 가장 긴 변이 되어야 한다.
3) 파이썬 코드
def tri(x,y,z):
number=[x,y,z]
big=max(number)
number.remove(big)
if(number[0]**2+number[1]**2==big**2 and x!=0 and y!=0 and z!=0):
return 1
return 0
x=1
y=1
z=1
while(x!=0 or y!=0 or z!=0):
x,y,z=map(int,input().split())
if x==0 and y==0 and z==0:
break
if(tri(x,y,z)==1):
print("right")
else:
print("wrong")
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 리스트에서 가장 큰 값을 찾는 방법
>max(리스트)
3-2) 설명
1. 세 변의 길이를 받을 변수를 선언합니다.
x=1
y=1
z=1
2. x, y, z가 모두 0이 아니라면 세 변을 입력 받습니다.
while(x!=0 or y!=0 or z!=0):
x,y,z=map(int,input().split())
3. 첫 시도에서 0 0 0을 입력할 수도 있으니 이를 만나면 종료하는 if문을 만듭니다.
while(x!=0 or y!=0 or z!=0):
x,y,z=map(int,input().split())
if x==0 and y==0 and z==0:
break
4. 0 0 0이 아닌 케이스 빼고는 모두 직각 삼각형인지 판단하는 함수에서 판별을 받습니다.
while(x!=0 or y!=0 or z!=0):
x,y,z=map(int,input().split())
if x==0 and y==0 and z==0:
break
if(tri(x,y,z)==1):
print("right")
else:
print("wrong")
위의 코드에서 tri(x,y,z) 함수로 이동해 판별합니다.
def tri(x,y,z):
number=[x,y,z]
big=max(number)
number.remove(big)
if(number[0]**2+number[1]**2==big**2 and x!=0 and y!=0 and z!=0):
return 1
return 0
함수는 세 변의 길이 중 가장 긴 요소를 big에 저장 후 리스트에서 제외합니다.
그 후 남은 두 변을 제곱해 더하고 가장 긴변의 제곱과 같은지 판별하여 성립하면 return 1 안하면 return 0을 해줍니다.
추가로 변에 0이 들어가 있으면 삼각형을 만들지 못하기 때문에 단 하나의 변이라도 0이 있다면 return 0을 합니다.
ex) 0 1 1
4) c언어
없음
궁금한 점이나 공유할 정보가 있다면 댓글로 남겨주세요 *^^*
끝!
반응형
'알고리즘 > 백준' 카테고리의 다른 글
2231번 분해합 (0) | 2021.07.27 |
---|---|
3053번 택시 기하학 (0) | 2021.07.24 |
3009번 네 번째 점 (0) | 2021.07.23 |
1085번 직사각형에서 탈출 (0) | 2021.07.22 |
9020번 골드바흐의 추측 (0) | 2021.07.21 |