Algorithms
20 Feb 2018 | Algorithms Data_Structure
Summary :
포스팅
—
알고리즘 어떤 문제를 풀기 위한 절차나 방법
어떤 문제가 있을 때 주어진 ‘입력’ 정보를 원하는 ‘출력(답)’ 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것.
ex) 절댓값 구하기
문제 : 어떤 숫자의 절댓값 구하기
입력 : 절댓값을 구할 실수 a
출력 : a의 절댓값
풀이 : 주어진 실수 a가 양수 혹은 0이면 a값이 그대로 절댓값이 된다. a가 음수이면 a에 마이너스(-)를 붙이면 절댓값이 된다.
- a가 0보다 크거나 같은지 확인. 만약 그렇다면 a를 결과로 return
- a가 0보다 작으면 -a를 결과로 돌려준다.
이 두문장이 ‘실수의 절댓값 구하는 알고리즘 ‘ 이다.
컴퓨터 프로그램을 만들기 위한 알고리즘은 계산 과정을 최대한 구체적이고 명료하게 적어야 한다.
어떤 문제를 푸는 방법이 꼭 한가지만 있는 것은 아니다.
a를 제곱한 다음 그 값의 제곱근을 취하는 방법으로도 절댓값을 구할 수 있다.
여러 알고리즘 중에 상황에 맞는 적당한 알고리즘을 골라 쓰려면 어떤 알고리즘이 어떤 특징을 지니고 있으며 얼마나 계산이 빠르고 편한지 등을 알아야 한다.
‘알고리즘 분석’ - 알고리즘의 성능이나 특징을 분석하는 것
프로그램을 작성하기 전에 알고리즘을 ‘사람의 언어’로 최대한 자세히 적어두면, 알고리즘을 프로그램으로 옮기는 과정이 더 쉬워진다.
ex)
- a를 제곱하여 변수 b에 저장한다.
- b의 제곱근을 구해 결과로 돌려준다.
import math # 수학 모듈 사용
def abs_sign(a):
if a>=0:
return a
else:
return -a
def abs_square(a):
b = a*a
return math.sqrt(b) # 수학 모듈의 제곱근 함수
print(abs_sign(5))
print(abs_sign(-3))
print()
print(abs_square(5))
print(abs_square(-3))
5.0 , 3.0으로 출력된 이유는 math.sqrt()가 소수점이 붙은 값을 돌려주기 때문
Summary :
포스팅 — 알고리즘 어떤 문제를 풀기 위한 절차나 방법 어떤 문제가 있을 때 주어진 ‘입력’ 정보를 원하는 ‘출력(답)’ 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것.
ex) 절댓값 구하기 문제 : 어떤 숫자의 절댓값 구하기 입력 : 절댓값을 구할 실수 a 출력 : a의 절댓값
풀이 : 주어진 실수 a가 양수 혹은 0이면 a값이 그대로 절댓값이 된다. a가 음수이면 a에 마이너스(-)를 붙이면 절댓값이 된다.
- a가 0보다 크거나 같은지 확인. 만약 그렇다면 a를 결과로 return
- a가 0보다 작으면 -a를 결과로 돌려준다.
이 두문장이 ‘실수의 절댓값 구하는 알고리즘 ‘ 이다. 컴퓨터 프로그램을 만들기 위한 알고리즘은 계산 과정을 최대한 구체적이고 명료하게 적어야 한다.
어떤 문제를 푸는 방법이 꼭 한가지만 있는 것은 아니다. a를 제곱한 다음 그 값의 제곱근을 취하는 방법으로도 절댓값을 구할 수 있다. 여러 알고리즘 중에 상황에 맞는 적당한 알고리즘을 골라 쓰려면 어떤 알고리즘이 어떤 특징을 지니고 있으며 얼마나 계산이 빠르고 편한지 등을 알아야 한다.
‘알고리즘 분석’ - 알고리즘의 성능이나 특징을 분석하는 것
프로그램을 작성하기 전에 알고리즘을 ‘사람의 언어’로 최대한 자세히 적어두면, 알고리즘을 프로그램으로 옮기는 과정이 더 쉬워진다.
ex)
- a를 제곱하여 변수 b에 저장한다.
- b의 제곱근을 구해 결과로 돌려준다.
import math # 수학 모듈 사용
def abs_sign(a):
if a>=0:
return a
else:
return -a
def abs_square(a):
b = a*a
return math.sqrt(b) # 수학 모듈의 제곱근 함수
print(abs_sign(5))
print(abs_sign(-3))
print()
print(abs_square(5))
print(abs_square(-3))
5.0 , 3.0으로 출력된 이유는 math.sqrt()가 소수점이 붙은 값을 돌려주기 때문
Comments