본문 바로가기

🖥️ Computer Science/Data Structure15

[자료구조] Time Complexity (시간 복잡도) Time Complexity (시간 복잡도) 컴퓨터 프로그램의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계 알고리즘의 로직이 얼마나 오랜 시간이 걸리는지 나타내는 데 사용 알고리즘의 로직을 코드로 구현할 때, 효율적으로 구현하기위해 고려해야 함 효율적인 알고리즘 구현: 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘을 구성 주로 빅-오 표기법을 사용해 나타냄 시간 복잡도를 표기하는 방법 Big-O(Big-Oh, 빅-오) ⇒ 상한 점근, 최악의 경우에 대해 나타내는 방법 Big-Ω(Big-Omega, 빅-오메가) ⇒ 하한 점근, 최선의 경우에 대해 나타내는 방법 Big-θ(Big-Theta, 빅-세타) ⇒ 빅 오와 빅 오메가의 공통부.. 2023. 3. 7.
[자료구조] 큐(Queue) 큐(Queue) 선입선출(First-In-First-Out, FIFO) 원칙에 따라 데이터를 저장하는 자료구조 가장 먼저 들어온 데이터가 가장 먼저 나가는 구조 한쪽 끝에서만 삽입이 이루어지고, 다른 한쪽 끝에서는 삭제 연산만 이루어지는 유한 순서 리스트 일상생활에서 줄을 서서 기다리는 것과 유사 대기열이나 작업 스케줄링 등에서 유용하게 사용 삽입 및 삭제에 O(1), 탐색에 O(n) 의 시간 복잡도를 가짐 큐(Queue)의 구현 큐는 대개 배열이나 연결 리스트를 이용해 구현 배열을 이용하는 경우, front와 rear라는 두 개의 인덱스 변수를 사용하여 큐의 시작과 끝을 가리킴 데이터를 삽입할 때에는 rear 변수를 증가시켜 새로운 데이터를 마지막에 추가 데이터를 추출할 때에는 front 변수를 증가시.. 2023. 3. 6.
[자료구조] 스택(Stack) 스택(Stack) 한쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조 LIFO(후입선출): 가장 최근에 들어온 데이터가 가장 먼저 나감 재귀적인 함수, 알고리즘에 사용 웹브라우저 방문 기록 등에 사용 삽입 및 삭제에 O(1), 탐색에 O(n)의 시간복잡도를 가짐 스택의 구조 스택 상단(stack top): 스택의 가장 윗부분, 스택에서 입출력이 이루어지는 부분 스택 하단(stack bottom): 스택의 가장 아랫부분 요소(element): 스택에 저장되는 것 공백 스택(empty stack): 비어있는 스택 포화 스택(full stack): 포화 상태의 스택 스택의 연산 pop(): 스택에서 가장 위에 있는 항목 제거 push(element): 요소를 스.. 2023. 2. 14.
[자료구조] 연결 리스트(Linked List) 연결 리스트(Linked List) 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조 배열의 고정 크기의 단점을 보완하기 위해 만들어짐 배열과 달리 연속적인 메모리 공간에 저장되어 있지 않기 때문에 연결 필요 연결 리스트 표현 Head는 리스트의 처음을 나타냄 노드는 데이터와 다음 노드를 가리키는 Next 포인터로 구성 각 노드는 Next 포인터를 사용해 다음 노드와 연결 마지막 노드는 null을 가리켜 리스트의 끝을 나타냄 연결 리스트 종류 1. 단일 연결 리스트 각 노드당 한 개의 포인터르 가지고 있음 포인터는 다음 노드의 위치를 가리킴 2. 이중 연결 리스트 각 노드당 두 개의 포인터를 가지고 있음 포인터는 각각 이전 노드와 다음노드의 위치를 가리킴 3... 2023. 2. 10.
[자료구조] 배열(Array)이란? 배열(Array) 연속된 메모리 공간에 순차적으로 저장된 데이터 모음 같은 타입의 데이터를 저장 요소(elemnet): 배열을 구성하는 각각의 값 인덱스(index): 배열에서의 위치를 가리키는 숫자 (0부터 시작) 배열 표현 크기가 5인 Int형 배열 array를 선언 swift var array: [Int] = [1, 2, 3, 4, 5] python array = [1, 2, 3, 4, 5] C int array[5] = {1, 2, 3, 4, 5}; Java Int[] array = {1, 2, 3, 4, 5}; 다차원 배열 (Multidimensional Array) index가 2개 이상으로 이루어진 배열 다차원 배열은 인덱스를 2개부터 최대 n개까지 만들 수 있음 //2차원 var array.. 2023. 2. 10.
반응형