![[자료구조] 양방향 연결리스트(Doubly Linked List), 원형 양방향 연결리스트(Circularly doubly Linked List)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwSzHf%2FbtrjO4KxZXK%2FBSvMog360xBGq5hG1M8gWK%2Fimg.png)
목표 단방향 연결 리스트에 이어 양방향 연결리스트에 대해서 알아보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 양방향 연결 리스트(Doubly Linked List) 원형 양방향 연결 리스트(Circularly Doubly Linked List) 양방향 연결 리스트 연산(이동·삽입·탐색·삭제) 및 파이썬 코드로 구현하기 정리 개요 이전 포스팅에서 단방향 연결 리스트(Singly Linked List)에 대해서 알아보았습니다. 연결 리스트를 관리하는 클래스와 각 노드들의 head부터 tail까지 다음 노드의 주소와 key(value)값을 갖고 있는 구조입니다. 참고 : [자료구조] 단방향 연결리스트(Singly Linked List)란? 파이썬으로 구현하기 다음 노드의 주소만 알고 있기 때문에,..
![[자료구조] 단방향 연결리스트(Singly Linked List)란? 파이썬으로 구현하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtZ0V%2FbtrjPNnSwEB%2Fck92cL1LlcM46FASUTKFIK%2Fimg.png)
목표 단방향 연결리스트의 개념에 대해서 이해해보고 파이썬으로 구현해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 단방향 연결 리스트란?(Singly Linked List) 파이썬으로 구현하기 정리 개요 앞서 순차적 자료구조인 리스트와 배열에 대해서 이해하고 스택과 큐에 대해서 공부하고 예제를 풀어보았습니다. 이번 포스팅에서는 단방향 연결리스트에 대해서 알아보도록 하겠습니다. 연결리스트는 배열과 유사하지만, 연속된 공간에 메모리를 차지하고 인덱스를 통해 상수시간 내에 값을 처리한다는 특징이 있습니다. 반면, 연결리스트는 메모리 상에 흩어져 있지만 연결되어 있다는 특징이 있습니다. 이에 대한 부분을 자세히 알아보도록 하겠습니다. 단방향 연결 리스트란?(Singly Linked List) 연결리스..
![[자료구조] 큐(Queue)란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyJG3q%2FbtrcB4Cu3S6%2FzyvKG5T1nvsSK5whcKp3ZK%2Fimg.png)
목표 순차적 자료구조인 큐의 개념에 대해서 알아보겠습니다. 개요 저번 포스팅에서는 순차적 자료구조인 스택에 대해서 알아보았습니다. 큐(Queue)는 스택과 비슷한 부분들이 많기 때문에 비교하면서 큐에 대해서 이해하는 시간을 갖도록 하겠습니다. 큐(Queue)란? 큐(Queue)는 스택과 비슷한 형태를 가집니다. 다만, 스택은 LIFO(Last In First Out) 구조로 마지막에 들어온 데이터가 제일 먼저 나가는 형태입니다. 큐는 FIFO(First In First Out) 구조로 맨 처음 들어온 데이터가 먼저 나가는 형태입니다. 예를 들어, 마트에서 줄 서는 것을 생각할 수 있겠네요. 스택에서는 Push, Pop, Len, Top 4가지 연산을 지원했습니다. 큐는 Enqueue, Dequeue, i..
![[자료구조] 스택 예제, 중위 표기(infix)를 후위 표기(postfix)로 변환하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVLbAm%2Fbtrb7z56KHB%2FuXtwbyT1fO3Bj7CZmYGae0%2Fimg.png)
목표 스택을 활용해서 중위 표기법으로 입력한 연산을 후위 표기법으로 변환해서 결과를 출력하는 프로그램을 작성해보겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 수식 표기법 스택 예제 : 중위 표기법을 후위 표기법으로 변환하여 계산하는 계산기 정리 개요 저번 포스팅에서 스택에 대해서 복습했습니다. 스택은 LIFO(Last In First Out) 구조를 갖는 자료구조입니다. 마치 접시와 같이 마지막에 들어간 데이터가 맨 처음 나오는 구조로, 파이썬의 클래스를 활용해서 구현했습니다. 클래스 안에 멤버 리스트를 생성해서 append, pop 함수로 스택을 만들었습니다. 이번 포스팅에서는 스택을 활용해서 중위 표기(infix)로 입력된 수식을 후위 표기(postfix)로 바꾸고 계산하는 프로그램을 작성해보도록..
![[자료구조] 스택(Stack)이란? 스택을 활용해 괄호쌍 확인하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Xs32%2FbtrbLd2jPQq%2FJK93n2kZIn4KS3cHaQDn60%2Fimg.png)
목표 저번 포스팅에서 간단히 알아봤던 스택(Stack)에 대해서 복습하고 실습을 통해 자세히 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 스택(Stack) 이란? 연습 문제: 괄호 맞추기 정리 개요 저번 포스팅에서 순차적 자료구조(Sequential Data Structure)에 대해서 알아보았습니다. 참고 - [자료구조] 순차적 자료구조, 배열과 리스트의 이해 그 중에서도 배열과 리스트에 대해서 자세히 알아보았는데요. 이 과정에서 스택, 큐, 디큐에 대해서 잠깐 언급했었습니다. 이번 포스팅에서는 스택에 대해서 자세히 알아보도록 하겠습니다. 스택(Stack)이란? 어떤 자료구조든 삽입·삭제·탐색 기능을 제공합니다. 스택에서는 Push(삽입), Pop(삭제)를 비롯한 Top(맨 위에 있는..
![[자료구조] 순차적 자료구조, 배열과 리스트의 이해](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBOj7d%2FbtrbCt5y8tl%2Fw8obdMKZDYwYE5rkZkRA81%2Fimg.png)
목표 대표적인 순차적 자료구조인 배열과 리스트에 대해서 자세히 알아보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 순차적 자료구조(Sequential Data Structure) C언어: 배열(Array) Pythoon: 리스트(List) 정리 개요 이전 포스팅에서 시간 복잡도와 BIG-O 표기법에 대해서 알아보았습니다. 이번 포스팅에서는 순차적 자료구조인 배열과 리스트에 대해서 알아보도록 하겠습니다. 배열과 리스트는 C언어나 파이썬을 이용해서 코딩을 할 때 자주 사용하는 자료구조입니다. 저도 학교에서 과제나 프로젝트를 진행할 때 많이 사용한 자료구조인데요. 특히, 리스트의 경우 많은 연산자가 있어서 유용하게 사용했습니다. 어떤 특징이 있는지 자세히 이해하고 쓰면 더 효율적으로 사용할 수 있을..
![[자료구조] 피보나치 수열의 시간 복잡도 완벽히 이해하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5OYJm%2FbtraWvwiTlx%2F6k2TReYFOkcHGhkTM6np90%2Fimg.png)
목표 피보나치 수열의 시간 복잡도(Time Complexity)에 대해서 이해해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 피보나치(Fibonacci) 수열이란? 피보나치 수열을 구하는 알고리즘 피보나치 수열 개선하기 피보나치 수열 알고리즘을 통한 시간 복잡도 심화 정리 개요 앞선 포스팅에서 시간 복잡도와 BIG-O 표기법에 대해서 배웠습니다. 이번에는 피보나치 수열의 시간 복잡도를 BIG-O 표기법으로 나타내 보겠습니다. 이를 통해, 어떤 특징이 있는지 알아보겠습니다. 피보나치(Fibonacci) 수열이란? 우선, 피보나치 수열이란 첫째 항, 둘째 항이 1이고 그 뒤의 항은 바로 앞의 두 항의 합인 수열을 뜻합니다. 말로 하면 조금 복잡해보이는데요. 직접 예시를 확인해보겠습니다. F(n)..
![[자료구조] 시간 복잡도를 나타내는 BIG-O 표기법 - (3)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0ap7y%2Fbtra8AiMKmi%2FNLKPKoGi14YCIROcxN6ev1%2Fimg.png)
목표 알고리즘 성능평가를 위한 시간 복잡도를 나타내는 BIG-O 표기법에 대해서 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 시간 복잡도의 활용 BIG-O 표기법이란? 정리 개요 3번의 게시글에 걸쳐서 가상 컴퓨터, 시간 복잡도, BIG-O 표기법에 대해서 배우는 이유는 "알고리즘의 성능 평가" 때문입니다. 지금까지 알고리즘의 성능 평가를 하기 위한 환경, 방법에 대해서 배웠습니다. 이번 시간에는 알고리즘의 성능을 증가율 측면에서 바라보는 BIG-O 표기법에 대해서 배워보도록 하겠습니다. 시간 복잡도의 활용 BIG-O 표기법에 이해하기 전에 시간 복잡도를 활용해서 알고리즘의 성능 평가를 어떻게 하는지 알아야 합니다. 저희는 이전 게시글을 통해서 알고리즘을 보고 알고리즘의 수행시간 즉, ..