전체 글 36

[DataScience Computing] Stack ADT(Abstract Data Type)

1️⃣ Stack Implementation(Array) ✔ 1. Data top : Stack 항목을 저장하는 list 형태의 Python으로 구현 top의 항목 수는 len(top)을 통해 구할 수 있다. ✔ 2. Operation(구현할 것들) isEmpty() push() pop() peek() display() 2️⃣ Class 형식으로 구현한 Stack 요소들(In Python) class Stack: def __init__( self )#생성자 self.top = []#top이 이제 클래스의 멤버 변수가 된다. def isEmpty( self ) : return len(self.top) == 0 def size( self ) : return len(self.top) def clear( sel..

카테고리 없음 2024.04.23

[DataScience Computing] Set ADT

1️⃣ SET(셋) 자료구조에서 셋(set)이란 유일한 요소들로만 구성된 컬렉션이다. 즉, 셋 안에는 중복된 요소가 존재할 수 없으며, 각 요소는 한 번만 나타난다. 이 특징 때문에 셋은 주로 요소의 존재 여부를 빠르게 테스트하거나 중복을 제거할 때 사용된다. 2️⃣ SET ADT(Abstract Data Type) ✔ 1. Data 동일한 유형의 고유 요소 모음이다. 요소는 비교 가능해야 하지만 순서는 중요하지 않다. ✔ 2. Operations • set(): 새로운 빈 셋을 생성한다. • size(): 셋의 요소 수를 반환한다. • contains(e): 셋에 요소 e가 포함되어 있는지 확인하고 Boolean 값을 확인한다. • insert(e): 셋에 새 요소 e를 삽입한다. e가 이미 존재하는 ..

카테고리 없음 2024.04.23

[DataScience Computing] List ADT

1️⃣ List ADT ✔ 1. Data 동일한 유형의 요소들을 순서대로 모아놓았음 ✔ 2. Operations • List(): 데이터를 추가하기 위해 빈 list를 선언한다. • insert(pos, e): pos 위치에 새 요소 e를 삽입한다. • delete(pos): 위치 pos에서 요소를 제거하고 반환한다. • isEmpty(): 목록이 비었는지 확인한다. • getEntry(pos): pos 위치에 있는 요소를 반환한다. • size(): 목록의 요소 수를 반환한다. • clear(): list를 빈 상태로 초기화한다. • find(item): 목록에서 항목을 검색하고 해당 index를 반환한다. • replace(pos, item): pos 위치의 요소를 item으로 교체한다. • sort..

카테고리 없음 2024.04.23

[DataScience Computing] Recursive Algorithms(재귀 함수)

1️⃣ Recursive Algorithm(재귀 함수) 재귀함수란 알고리즘이나 함수가 문제를 해결하기 위해 자기 자신을 다시 호출하는 기능이다. 정의 자체가 재귀적일 때 적합하다. 2️⃣ 재귀 함수의 종류 ✔ 1. Calculate Factorial(팩토리얼 계산) ✔ 2. Fibonacci Sequence(피보나치 수열) ✔ 그 외 : Binomial Coefficient, Tower of Hanoi, Binary Search … 3️⃣ Factorial Calculation Time Complextiy(시간 복잡도) 우선 팩토리얼 계산의 시간 복잡도는 O(n)이다. 이는 함수가 자기 자신을 정확히 n번 호출하기 때문이다. 팩토리얼 함수 factorial(n)은 n이 0이나 1일 경우에 바로 결과를 반..

카테고리 없음 2024.04.23

[DataScience Computing] Abstract Data Type(추상 데이터 타입)

1️⃣ Abstract Data Type(추상 데이터 타입) Abstract Data Type(추상 데이터 타입)이란 말 그대로 데이터 유형을 추상적(수학적)으로 정의한 것이다. ADT에서는 데이터 작업이 무엇인지 정의하지만 이를 구현하는 방법은 정의하지 않는다. 또한 시스템의 핵심 구조나 동작에 중점을 둔다. 2️⃣ ADT 예제(백팩) Storage for items that allow duplicates. Items are stored individually without a specific order, but comparison between items should be possible. Operations Bag(): 새로운 빈 가방을 생성합니다. insert(e): 가방에 새로운 물건을 추가합니..

카테고리 없음 2024.04.23

[DataScience Computing] Time Complexity

1️⃣ Time Complexity(시간 복잡도)의 정의 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가르킨 것 더 간단하게 설명한다면 '알고리즘의 성능을 설명하는 것'이 되겠다. 다른 의미로는 알고리즘을 수행하기 위해 프로세스가 수행해야 하는 연산을 수치화 한것이다. 그럼 왜 실행시간이 아닌 연산추치로 판별하는 것일까? 이는 여러 조건(언어, HW 등)에 따라 편차가 달라지기 때문에 명령어의 실행 횟수만을 고려하는 것이다. 2️⃣ Big O 표기법 Big O 표기법은 불필요한 연산을 제거하여 알고리즘 분석을 쉽게 하고자 하는 데 그 목적이 있다. Big O로 측정되는 복잡성에는 시간과 공간복잡도가 있는데 시간 복잡도는 입력된 N의 크기에 따라 실행되는 조작의 수를 나타내며, 공간복잡도는 알고리즘..

[DataScience Computing] None Linear Data Structure 1 - Tree

1️⃣ None Linear Data Structure비선형 데이터 구조는 데이터 요소가 선형적으로 나열되지 않고, 계층적이거나 복잡한 연결 관계를 가진 구조를 말한다. 이러한 데이터 구조는 다양한 수준의 관계를 갖고 데이터 요소를 구성하며, 여러 경로를 통해 요소들 사이를 탐색할 수 있다. 대표적인 비선형 데이터 구조로는 트리와 그래프가 있다. 오늘은 트리에 대해 알아보도록 하자. 2️⃣ 트리(Tree)트리는 노드로 구성된 계층적 데이터 구조로, 한 노드가 여러 노드를 가리킬 수 있지만, 어떤 노드도 두 개 이상의 노드에 의해 가려켜지지 않는다. 각 노드는 특정 값을 저장하며, 노드 간에는 부모-자식 관계가 있다. 트리 구조의 종류로는 일반 트리, 이진 트리, 이진 검색 트리, AVL 트리, 레드-블랙..

카테고리 없음 2024.04.21

[DataScience Computing] Linear Data Structure 4 - Queue

1️⃣ Que 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 관리한다. 말 그대로 첫 번째, 데이터가 첫 번째로 나가는 구조를 의미한다. 큐는 일상 생활에서 흔히 볼 수 있는 줄 서기와 비슷한 방식으로 작동되며, 여러 종류의 컴퓨팅 작업에서 효율적인 데이터 관리를 위해 사용됩니다. 2️⃣ 큐의 연산 종류 Enqueue : 큐의 뒤쪽에 새로운 데이터를 추가한다. Dequeue : 큐의 앞쪽에서 데이터를 제거하고 그 값을 반환한다. Peek / Front : 큐의 맨 앞에 있는 데이터를 제거하고 그 값을 반환한다. IsEmpty : 큐가 비어있는지 확인한다. Size : 큐에 저장된 데이터의 개수를 반환한다. 3️⃣ 큐의 구현 방법 1. 배열기반 큐 배열을 사용하여 데이터를 저장한..

카테고리 없음 2024.04.20

[DataScience Computing] Linear Data Structure 3 - List

1️⃣ List List는 데이터를 일렬로 나열한 구조로, 데이터의 추가, 삭제, 검색과 같은 다양한 작업을 수행할 수 있습니다. 리스트는 배열 기반과 연결 리스트 기반의 두 가지 주요 유형이 있다. 2️⃣ 배열 기반 리스트 배열을 사용하여 데이터를 순차적으로 저장한다. 인덱스를 통해 데이터에 빠르게 접근할 수 있는 장점이 있다. 그러나 데이터를 중간에 삽입하거나 삭제할 때는 해당 위치에서부터 모든 데이터를 이동시켜야 하므로 비효율적일 수 있다. 배열의 크기가 정적인 경우, 배열이 꽉 차면 더 큰 배열로 데이터를 옮겨야 하므로, 크기 조정 작업이 필요할 수 있다. 3️⃣ 연결 리스트 기반 리스트 각 데이터가 포인터로 다음 데이터와 연결된 형태로 구성된다. 데이터의 삽입과 삭제가 유연하며, 오버헤드 없이 ..

카테고리 없음 2024.04.20

[DataScience Computing] Linear Data Structure 2 - Array

1️⃣ 배열(Array) 배열(Array)은 선형 데이터 구조 중 하나로, 동일한 데이터 타입의 요소들을 연속적인 메모리 위치에 저장한다. 배열의 각 요소는 인덱스를 통해 접근할 수 있으며, 이 인덱스를 사용하여 배열 내의 특정 위치에 빠르게 접근할 수 있다. 2️⃣ 주요 특징 1. 고정 크기 대부분의 프로그래밍 언어에서 배열은 선언 시 지정된 크기를 가지며, 이 크기는 실행 중에 변경할 수 없다, 이는 배열의 메모리 관리를 단순하게 하지만, 동적 크기 조정이 필요할 때는 제약이 될 수 있다. 2. 동일한 데이터 타입 배열의 모든 요소는 같은 데이터 타입을 가져야 한다. 이는 각 요소의 메모리 크기가 동일하므로, 인덱스를 사용한 계산이 가능하게 하고, 이를 통해 특정 요소에 매우 빠르게 접근할 수 있다...

카테고리 없음 2024.04.20