본문 바로가기

6.5. Data Sturcture

(15)
6/21(수) IT 자료구조(7일차) / 8. 큐(Queue) 8. 큐(Queue) 큐(Queue)는 데이터의 삽입과 삭제가 각각 다른 끝에서 이루어지는 선형 자료구조임. 큐는 데이터가 들어온 순서대로 처리되는 선입선출(First-In-First-Out, FIFO) 구조를 가지고 있음. 큐는 일상 생활에서 줄을 서는 것을 생각하면 이해하기 쉬움. 가장 먼저 온 사람이 가장 먼저 처리되는 것과 같은 원리임. 큐는 주로 "enqueue"와 "dequeue"라는 두 가지 기본 연산을 지원함. "enqueue" 연산은 큐의 뒤쪽에 원소를 추가하는 작업을 의미하며, "dequeue" 연산은 큐의 앞쪽에 있는 원소를 제거하고 반환하는 작업을 의미함. 큐에서 데이터를 확인하는 연산으로는 "front" 또는 "peek"이 있을 수 있음. 큐는 다양한 응용 분야에서 사용됨. 예를 ..
6/20(화) IT 자료구조(6일차) / 7.스택(Stack) 7. 스택(Stack) 스택(Stack)은 한쪽 끝에서만 자료의 삽입과 삭제가 이루어지는 선형 자료구조임. 이러한 특성으로 스택은 후입선출(Last-In-First-Out, LIFO) 구조를 가짐. 스택은 일상 생활에서 쌓여있는 접시나 책을 생각하면 이해하기 쉬운데, 가장 마지막에 쌓인 접시나 책을 먼저 가져오게 되는 것과 같은 원리임. 스택은 보통 "push"와 "pop" 두 가지 기본 연산을 지원함. "push" 연산은 스택의 가장 위에 원소를 추가하는 작업을 의미하며, "pop" 연산은 스택의 가장 위에 있는 원소를 제거하고 반환하는 작업을 의미함. 스택의 맨 위에 있는 원소를 확인하는 연산인 "top"이나 "peek"도 지원할 수 있음. 스택은 여러 가지 응용 분야에서 유용하게 활용될 수 있음. ..
6/19(월) IT 자료구조(5일차) / 6.원형 이중 연결리스트 6. 원형 이중 연결리스트(Circular Doubly LinkedList) 원형 이중 연결 리스트는 이중 연결 리스트의 변형된 형태로, 첫 번째 노드와 마지막 노드가 연결되어 원형 구조를 형성하는 자료구조. 이중 연결 리스트는 각 노드가 데이터와 이전 노드를 가리키는 포인터와 다음 노드를 가리키는 포인터를 가지고 있는데, 원형 이중 연결 리스트는 이중 연결 리스트의 마지막 노드가 첫 번째 노드를 가리키고, 첫 번째 노드의 이전 노드는 마지막 노드를 가리키는 방식으로 구성됨. 이 구조는 리스트를 순환적으로 탐색할 수 있게 해주는 장점이 있음. 예를 들어, 리스트의 마지막 노드에서 첫 번째 노드로 이동할 때 리스트의 끝에서 다시 처음으로 이동하지 않고 바로 이동할 수 있음. 원형 이중 연결 리스트의 삽입,..
6/15(목) IT 자료구조(4일차) / 5.원형 연결리스트 5. 원형 연결리스트(Circular LinkedList) 원형 연결 리스트는 연결 리스트의 한 종류로 마지막 노드가 첫 번째 노드를 가리키며, 첫 번째 노드의 이전 노드는 마지막 노드를 가리킴. 이러한 구조로 인해 리스트의 끝과 시작이 연결되어 있는 원형 모양을 이루게 됨. 원형 연결 리스트의 장점: 1) 순환 구조: 리스트의 마지막 노드가 첫 번째 노드를 가리키므로, 순환적으로 데이터에 접근할 수 있음. 이를 통해 순차적인 반복 작업을 수행할 때 유용함. 2) 리스트 순회: 원형 연결 리스트는 리스트의 끝과 시작이 연결되어 있으므로, 리스트를 순회하는 데 있어서 종료 조건을 명시할 필요가 없음. 순회 작업을 할 때 끝에 도달하면 다시 첫 번째 노드로 돌아갈 수 있음. 3) 데이터 삽입/삭제: 새로운 ..
6/14(수) IT 자료구조(3일차) / 4.리스트 4. 리스트(List) 4-2. LinkedList 4-2-3. 탐색 .get(i) 주어진 인덱스 i의 항목을 반환. 조건이 참이면 i에 해당하는 노드 값 또는 데이터를 반환하고 i가 유효한 범위 내에 있지 않을 때 '범위 밖입니다'라는 메시지를 출력함. get(i): # .get(i) : i번째 원소를 가져오는 것을 의미. if i >= 0 and i = 0 and i ListNode: curr = self.head for index in range(i+1): curr = curr.next return curr # 추가 : 가장 마지막에 삽입 def append(self, new_item): prev = self.get_node(self.num_items - 1) new_node = ListNode(n..
6/13(화) IT 자료구조(2일차) / 3.배열~4.리스트 3. 배열(Array) 배열은 자료구조의 하나로, 동일한 데이터 타입의 요소들을 순차적으로 저장하는 컨테이너이다. 배열은 메모리에서 연속적으로 할당된 공간에 요소들을 저장하므로, 특정 인덱스를 기반으로 한 접근이 가능하다. 특징: 인덱스: 배열의 각 요소는 0부터 시작하는 인덱스를 가진다. 예를 들어, 첫 번째 요소는 인덱스 0에 저장되고, 두 번째 요소는 인덱스 1에 저장된다. 크기: 배열의 크기는 배열에 저장할 수 있는 요소의 개수를 나타냅니다. 크기는 배열을 생성할 때 결정되며, 이후에 변경할 수 없다. 연속적인 메모리 할당: 배열은 메모리에서 연속적으로 할당된 공간에 요소를 저장한다. 이는 인덱스를 통한 빠른 접근과 메모리 캐시 효율성을 제공한다. 동일한 데이터 타입: 배열은 동일한 데이터 타입의..
6/12(월) IT 자료구조(1일차) / 0.OT~2.알고리즘 0.OT(자료구조-알고리즘) 도움이 되는 웹사이트 * 코드 흐름을 분석: - 파이썬튜터: https://pythontutor.com/python-debugger.html#mode=edit Online Python compiler and debugger - Python Tutor - Learn Python by visualizing code Write code in Python 3.6 Python 2.7 [obsolete] ------ C (gcc 9.3, C17 + GNU) C++ (g++ 9.3, C++20 + GNU) Java 8 JavaScript ES6 Visualize Execution hide exited frames [default] show all frames (Python) inline ..