본문 바로가기

Study/Python Algorithm

[모두의 알고리즘 with 파이썬] - 0. 알고리즘

* 이 포스팅은 '모두의 알고리즘 with 파이썬'이라는 책을 읽고 공부한 것을 정리하는 포스팅입니다.

 

책을 읽고 공부한 것을 정리하기 전에 알고리즘이란 무엇인지 알아보겠습니다.

 

알고리즘이란?

 

알고리즘이란 간단히 말해 '어떤 문제를 풀기 위한 절차나 방법'입니다. 좀 더 구체적으로 얘기하면 어떤 문제가 있을 때 주어진 '입력' 정보를 원하는 '출력(답)' 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것입니다.

 

  • 알고리즘은 어떤 문제를 풀기위한 절차나 방법입니다.
  • 알고리즘은 주어진 '입력'을 '출력'으로 만드는 과정입니다.
  • 알고리즘의 각 단계는 구체적이고 명료해야 합니다.

알고리즘이 어떤건지 알아보았으니 간단하게 절댓값 구하기 알고리즘을 각각 abs_sign(a)abs_square(a)라는 파이썬 함수로 만들어 보겠습니다. 프로그램을 작성하기 전에 알고리즘을 '사람의 언어'로 최대한 자세히 적어두면, 알고리즘을 프로그램으로 옮기는 과정이 더 쉬워집니다.

알고리즘과 실제로 만들어짐 프로그램을 비교해 보면서 '사람의 언어'로 적은 알고리즘이 '컴퓨터의 언어'인 파이썬으로 어떻게 바뀌는지 살펴봅시다.

 

 

1. a의 절댓값 구하기 알고리즘 ①: 부호판단

  • a가 0보다 크거나 같은지 확인합니다. 만약 그렇다면 aㅇ를 결과로 돌려줍니다.
  • 위의 경우가 아니라면(a가 0보다 작다면) -a를 결과로 보여줍니다.

2. a의 절댓값 구하기 알고리즘 ②: 제곱 후 제곱근

  • a를 제곱하여 변수 b에 저장합니다.
  • b의 제곱근을 구해 결과로 돌려줍니다.

 

예제 소스

import math   # 수학 모듈 사용

# 절댓값 알고리즘 1 (부호 판단)
# 입력: 실수 a
# 출력: a의 절댓값

def abs_sign(a):
  if a >= 0:
    return a
  else:
    return -a

# 절댓값 알고리즘 2 (제곱 - 제곱근)
# 입력: 실수 a
# 출력: 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
3

5.0
3.0

 

 

 

참고로 두 번째 결괏값이 5와 3이 아니라 5.0과 3.0으로 출력된 이유는 파이썬의 제곱근 함수인 math.sqrt(b)가 소수점이 붙은 값을 돌려주기 때문입니다. 물론 5는 5.0과 같고 3은 3.0과 같은 결과라고 보면 됩니다.