알고리즘

[Python&SQL] 치환문자를 통해 피타고라스 정리 구현

LeeSeunghyuk 2021. 1. 18. 11:19
반응형

 

안녕하세요!

 

오늘은 피타고라스 정리를 사용해 직각 삼각형을 판단해주는 방법을 알아보겠습니다.

SQL , Python을 통해 구현해보도록 하겠습니다.

 

## 피타고라스 정리 ?

 

임의 직각 삼각형에서 밑변(a), 높이(b), 빗변(c)이라고 할 때 ,

밑변과 높이의 각 제곱의 합은 빗변의 제곱과 같다.

# 피타고라스 정리 증명

 

증명에는 여러가지 수학적 이론들이 많이 필요한 것을 찾게 되었습니다.

피타고라스 정리는 평면 기하에서 가장 의미있는 정리 중 하나라고 합니다.

300 여 개가 넘는 증명이 알려져 있다고 합니다.

 

유도되는 공식 중 코사인 제 2 법칙을 사용해서 피타고라스 정리를 확인해 보도록 하겠습니다.

 

 

# 알고리즘 

 

1. 밑변 , 높이, 빗변의 길이를 입력 받습니다.

2. 이를 위 공식을 사용해 값을 판단합니다.

3. 직각 삼각형인지 아닌지 판단합니다.

 

## Python 피타고라스 정리

 

1. 제 2 코사인 법칙 활용

 

파이썬 내장 모듈인 math를 사용합니다.

 

< math의 삼각함수 >

아크코사인(accos), 아크사인(asin), 아크탄젠트(atan) , 코사인(cos), 사인(sin), 탄젠트(tan)

 

위 삼각함수 중 코사인 함수를 사용해 아래 공식을 그대로 구현합니다.

import math

a=float(input('밑변 길이를 입력하세요:'))
b=float(input('높이 길이를 입력하세요:'))
c=float(input('빗변 길이를 입력하세요:'))

a2=a**2
b2=b**2
c2=c**2

if c2==a2+b2-2*a*b*round(math.cos(90)):
    print('직각 삼각형 입니다.')
else:
    print('직각 삼각형이 아닙니다.')

 

2. 피타고라스 정리 활용

 

아래 공식을 바로 적용해서 직각 삼각형을 구별해 봅니다.

 

a=float(input('변a 길이를 입력하세요:'))
b=float(input('변b 길이를 입력하세요:'))
c=float(input('빗변 길이를 입력하세요:'))

if a**2+b**2==c**2:
    print('직각 삼각형 입니다.')
else:
    print('직각 삼각형이 아닙니다.')    

 

피타고라스 정리는 누구나 아는 가장 대중적인 정리라고 생각합니다.

간단한 정리를 프로그래밍으로 구현하면서 math 모듈의 삼각 함수를 알게 되었네요!

 

## SQL 피타고라스 정리

 

1. 파이썬과 마찬가지로 세 가지 변을 입력 받습니다.

2. case 문을 활용해 직각삼각형을 판단합니다.

 

# SQL 치환변수(&, &&)

 

치환 변수를 사용해 쿼리 내에 내가 원하는 값을 입력할 수 있습니다.

다음 쿼리를 작성해서 실행해 봅니다.

select &치환값1,&치환값2
from dual;

 

치환값으로 입력한 값들이 각각 칼럼과 데이터 값으로 사용되어서 출력되었습니다.

 

다음 쿼리를 사용해 보겠습니다.

select ename,job,sal
from emp
where sal=&salary;

3000값을 입력하자 sal 값이 3000인 데이터가 출력되었습니다.

 

이번에는 이름이 scott인 데이터를 출력해 보겠습니다.

select ename,job,sal
from emp
where ename=&name;

 

오류가 발생합니다.

그 이유는 문자를 입력하면 칼럼 명으로 인식된다고 합니다.

따라서 문자라는 것을 표시하기 위해 작은 따옴표를 사용합니다

 

이름 데이터는 모두 대문자이기 때문에 upper함수도 사용하고, 문자열 표시로 바꿔주니

원하는 데이터 값이 출력되었습니다!

 

# name 변수를 한 번만 입력해도 계속 사용하고 싶다면? --> && 치환변수

 

select ename,job,sal,'&&name'
from emp
where ename=upper('&name');

 

위 &&name에서 한 번 받은 scott을 name<- 변수에 저장했습니다.

따라서 이후부터는 &name만 사용하면, scott 이라는 문자를 사용할 수 있습니다.

 

계속 입력하거나 , 한 번 입력한 데이터를 다시 바꾸거나 할 때는 define , undefine을 사용해

치환변수를 선언 / 해제 할 수 있습니다. 

 

SQL에서 변수를 치환하는 방법을 사용해 피타고라스 정리를 구현해 봅니다!

 

select case when (power(&밑변,2) + power(&높이,2)) = power(&빗변,2) then '직각삼각형이 맞습니다.'
             else '직각삼각형이 아닙니다.' end 피타고라스
	from dual;

 

쉽고 간단한 정리를 파이썬과 SQL로 구현했습니다.

단순히 구현을 하는 것이 목적이 아니라 , 구현을 하는 과정에서

Python의 삼각함수 사용,  SQL의 치환변수 입력과 치환변수 선언에 대한 학습을 진행했습니다.

 

읽어주셔서 감사합니다.

 

반응형