목표 단방향 연결 리스트에 이어 양방향 연결리스트에 대해서 알아보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 양방향 연결 리스트(Doubly Linked List) 원형 양방향 연결 리스트(Circularly Doubly Linked List) 양방향 연결 리스트 연산(이동·삽입·탐색·삭제) 및 파이썬 코드로 구현하기 정리 개요 이전 포스팅에서 단방향 연결 리스트(Singly Linked List)에 대해서 알아보았습니다. 연결 리스트를 관리하는 클래스와 각 노드들의 head부터 tail까지 다음 노드의 주소와 key(value)값을 갖고 있는 구조입니다. 참고 : [자료구조] 단방향 연결리스트(Singly Linked List)란? 파이썬으로 구현하기 다음 노드의 주소만 알고 있기 때문에,..
목표 알고리즘 성능평가를 위한 시간 복잡도를 나타내는 BIG-O 표기법에 대해서 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 시간 복잡도의 활용 BIG-O 표기법이란? 정리 개요 3번의 게시글에 걸쳐서 가상 컴퓨터, 시간 복잡도, BIG-O 표기법에 대해서 배우는 이유는 "알고리즘의 성능 평가" 때문입니다. 지금까지 알고리즘의 성능 평가를 하기 위한 환경, 방법에 대해서 배웠습니다. 이번 시간에는 알고리즘의 성능을 증가율 측면에서 바라보는 BIG-O 표기법에 대해서 배워보도록 하겠습니다. 시간 복잡도의 활용 BIG-O 표기법에 이해하기 전에 시간 복잡도를 활용해서 알고리즘의 성능 평가를 어떻게 하는지 알아야 합니다. 저희는 이전 게시글을 통해서 알고리즘을 보고 알고리즘의 수행시간 즉, ..
목표 예시를 통해서 시간 복잡도에 대한 개념을 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 예시로 이해하는 시간 복잡도 다양한 함수로 완벽하게 이해하기 정리 개요 저번 포스팅에서 알고리즘의 성능 평가를 위해서 시간 복잡도(Time Complexity)라는 개념을 이용한다고 했습니다. 사람들마다 H/W, S/W 환경이 다르기 때문에 가상 컴퓨터(Virtual Machine)에서 가상 언어로 이루어진 가상 코드를 사용해서 알고리즘의 성능을 평가합니다. 포스팅 마지막에 가상 코드의 예시를 확인하면서 마무리했는데요. 이번 포스팅에서는 마지막에 확인한 코드를 보면서 시간 복잡도를 이해하는 시간을 갖겠습니다. 예시로 이해하는 시간 복잡도 알고리즘의 성능 평가는 알고리즘의 수행 시간을 비교해서 진행..
목표 시간 복잡도를 측정하기 위한 가상 컴퓨터(Virtual Machine)의 개념에 대해서 이해한다. 목차 클릭하면 해당 목차로 이동합니다. 1. 가상 컴퓨터 2. 가상 언어 3. 가상 코드 4. 정리 개요 가상 컴퓨터, 가상 언어, 가상 코드에 대한 개념은 자료구조와 알고리즘의 성능 평가를 위해서 필요합니다. 성능 평가는 알고리즘을 실행하는지 얼마나 걸리는지 수행시간을 측정하는 것입니다. 이 수행시간을 각자의 컴퓨터에서 코드(C, Java ..)로 수행 시간을 측정할 수도 있지만, 개개인의 H/W 성능이 제 각각이고, S/W 경이 모두 다르기 때문에 정확한 성능을 알 수 없습니다. 그렇기 때문에, 자료구조와 알고리즘의 성능 평가는 가상 컴퓨터 위에서 가상 언어를 이용한 가상 코드를 이용해서 진행됩니다..