for data science

Algorithms

|

Summary :

포스팅 — 알고리즘 어떤 문제를 풀기 위한 절차나 방법 어떤 문제가 있을 때 주어진 ‘입력’ 정보를 원하는 ‘출력(답)’ 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것.

ex) 절댓값 구하기 문제 : 어떤 숫자의 절댓값 구하기 입력 : 절댓값을 구할 실수 a 출력 : a의 절댓값

풀이 : 주어진 실수 a가 양수 혹은 0이면 a값이 그대로 절댓값이 된다. a가 음수이면 a에 마이너스(-)를 붙이면 절댓값이 된다.

  1. a가 0보다 크거나 같은지 확인. 만약 그렇다면 a를 결과로 return
  2. a가 0보다 작으면 -a를 결과로 돌려준다.

이 두문장이 ‘실수의 절댓값 구하는 알고리즘 ‘ 이다. 컴퓨터 프로그램을 만들기 위한 알고리즘은 계산 과정을 최대한 구체적이고 명료하게 적어야 한다.

어떤 문제를 푸는 방법이 꼭 한가지만 있는 것은 아니다. a를 제곱한 다음 그 값의 제곱근을 취하는 방법으로도 절댓값을 구할 수 있다. 여러 알고리즘 중에 상황에 맞는 적당한 알고리즘을 골라 쓰려면 어떤 알고리즘이 어떤 특징을 지니고 있으며 얼마나 계산이 빠르고 편한지 등을 알아야 한다.

‘알고리즘 분석’ - 알고리즘의 성능이나 특징을 분석하는 것

프로그램을 작성하기 전에 알고리즘을 ‘사람의 언어’로 최대한 자세히 적어두면, 알고리즘을 프로그램으로 옮기는 과정이 더 쉬워진다.

ex)

  1. a를 제곱하여 변수 b에 저장한다.
  2. 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