본문 바로가기

DB엔지니어가 공부하는 python

파이썬 알고리즘 시리즈 시작합니다! 개념 이해 #1

파이썬 알고리즘 시리즈 시작합니다! 개념 이해 #1

안녕하세요.

파이썬을 제대로 공부하고자, 알고리즘 시리즈를 기획하게 되었습니다.

순차적으로 파이썬 알고리즘에 대해서 풀어나가 볼게요..

오늘은 첫 시간으로 알고리즘의 개념입니다..

알고리즘 이란?

 



간단하게 말해서 어떤 문제를 풀기 위한 절차나 방법을 이야기합니다..

구체적으로 이야기하자면,, 어떤 문제가 있을 때 주어진 정보를 원하는 결과로 나타나게 만드는 일련의 과정을 구체적이고 명료하게 적은 것입니다.

예를 들어보자면, 절댓값을 구해야 하는 문제가 있습니다.

여기서 알고리즘을 한번 생각해볼까요??

1. 입력받은 값이 0보다 크거나 같은지 확인
2. true 라면 입력받은 값 그대로 출력
3. 그게아니라면 -1
을 곱하여 반환

어떤가요?

이것이 실수의 절댓값을 구하는 알고리즘입니다..

우리가 이미 하고 있던 것들이 알고리즘 이었던 것입니다..

이처럼 컴퓨터 프로그램을 작성하는 알고리즘은 계산 과정을 최대한 구체적이고 명료하게 해야 합니다.

어떤 문제의 알고리즘은 하나만 존재하지 않습니다.

그럴 가능성은 매우 적죠.

실수의 절댓값을 구하는 알고리즘은 또 있습니다.

1. 입력받은 값을 제곱한다.
2. 제곱한 값의 제곱근을 구한다.

이것도 다른 알고리즘입니다..

여기에는 정답이 없습니다.

물론 더 효율적인 알고리즘은 존재하겠으나,, 정해진 답은 없다입니다..

여러 가지 알고리즘 중에 현 상황에 알맞은 알고리즘을 골라 쓰려면 각 알고리즘의 특징과 계산 절차를 잘 알고 있어야 합니다.

이처럼 알고리즘의 성능이나 특징을 분석하는 것을 '알고리즘 분석'이라고' 합니다.

 

알고리즘 분석을 통해서 우리는 우리에게 가장 최적화된 알고리즘을 선택할 줄 알아야 합니다.

 

위에서 언급한 두 가지 방법의 실수의 절댓값 구하는 알고리즘의 파이썬 코드를 공유합니다.

 

우리 모두 함께 앞으로 파이썬 알고리즘을 위하여 파이팅!!

 

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(7))
print(abs_sign(-9))
print()
print(abs_square(10))
print(abs_square(-23))


# 여기 위 코드의 결과는 7,-9 이 나오지만 
# 아래의 경우 10.0, 23.0 이 나온것을 확인 할 수 있습니다.
# 그 이유는 abs_square 안에 있는 math.sqrt 함수가 소수점을 붙여서
# 결과를 리턴하기 때문 입니다.

 

# 포스팅은 길벗출판사의 모두의 파이썬X알고리즘 도서를 참고로 작성하였습니다.

 

by.sTricky