memostack
article thumbnail
알고리즘의 시간 복잡도 - 빅오(O) 표기법
Algorithm 2020. 2. 16. 13:47

수 많은 알고리즘이 존재하지만, 어떤 알고리즘이 성능이 좋은지 평가하는 확실한 방법은 무엇일까? 방법은 수학적으로 증명하는 방법이다. 빅오(O) 표기법 빅오 표기법은 알고리즘의 성능 평가 방법 중 가장 많이 사용하는 방법 중 하나다. 가장 많이 사용하는 이유는 최악의 성능을 측정할 수 있기 때문이다. (최악의 성능을 알 수 있다면, 적어도 이 정도의 성능은 보장한다는 뜻이므로) 빅오 표기법 이외에도 오메가 표기법(Omega Notation), 세타 표기법(Theta Notation) 이 있지만, 본 글에서는 빅오 표기법에 대해서만 논한다. 알고리즘 분석하기 분석하기 전, 가정 3가지 헤더 파일은 알고리즘의 성능에 영향을 주지 않는다. 함수 진입, 함수 반환은 알고리즘 성능에 영향을 주지 않는다. 프로그램..

article thumbnail
1 부터 n 까지 더하기 알고리즘 (with python)
Algorithm 2020. 2. 16. 00:56

본 글은 Python3.7 환경에서 진행합니다. unittest 로 작성되어 있지만, 알고리즘을 확인하는데는 문제가 없습니다. 단순히 더하는 방법 결론부터 이야기 하자면 이 방법은 비효율적이다. 1 부터 10 까지 더하는 알고리즘을 작성하면 아래와 같이 생각할 수 있다. 코드 test_sum 함수를 보자. # -*- coding: utf-8 -*- import unittest class Exam01(unittest.TestCase): def test_sum(self): """1 부터 n 까지 더하는 알고리즘""" answer = 0 # 정답 for _ in range(1, 11): answer += _ # 1 부터 10까지 더한다. self.assertEqual(answer, 55) if __name__..