알고리즘/이론
-
선형자료구조 - 큐알고리즘/이론 2024. 4. 13. 01:28
📌 큐 1. 선입선출(First In First Out; FIFO) 자료구조 - 먼저 들어온 데이터가 먼저 나가는 구조 2. 입력 순서대로 데이터 처리가 필요할 때 사용 - ex) 프린터 출력 대기열, BFS(Breath-First Search) 등 - 프린터 출력 대기열 : 문서 작업 요청 후 여러 개가 쌓이면 가장 먼저 요청한 작업을 수행, PC가 종료되어도 프린터 내부 Pool에서 큐 구조로 먼저 들어온 요청을 수행 - BFS(Breath-First Search) : 트리 구조, 너비 우선 탐색으로 root 상단부터 시작해 아래로 진행하는 데이터 탐색 등 큐 기본 구조 선입선출(FIFO) 구조를 따름 기본적으로 데이터 추가, 꺼내기, 큐 공간 확인 동작으로 이루어짐 큐에서 데이터가 꺼내지는 곳은 ..
-
선형자료구조 - 스택알고리즘/이론 2024. 4. 12. 17:48
📌 스택 1. 후입 선출(Last In First Out; LIFO) 자료구조 - 마지막에 들어온 데이터가 먼저 나가는 구조 2. 데이터가 입력된 순서의 역순으로 처리되어야 할 때 사용 - ex) 함수 콜 스택, 수식 계산, 인터럽트 처리 등 - 함수 콜 스택 : 함수의 내부 함수를 실행하는 전체 로직을 저장하는 공간(fun2 -> fun1 -> main 함수) - 인터럽트 처리 : 로직을 실행하다가 중간에 다른 처리가 필요할 때 사용 (기존 로직을 스택에 저장한 후 중간 처리를 실행한 뒤에 다시 로직 실행) 스택 기본 구조 후입 선출 구조 기본적으로 데이터 추가, 꺼내기, 스택 공간 확인 동작으로 이러우짐 스택 공간 안에 스택 하단(Bottom)과 스택 상단(Top)이 있고, 데이터 삽입(Push)과 ..
-
선형자료구조 - 연결 리스트알고리즘/이론 2024. 4. 4. 11:29
📌 연결 리스트 1. 데이터를 링크로 연결해서 관리하는 자료구조 2. 자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지 않음 장점 데이터 공간을 미리 할당할 필요 없이 빈 공간에 할당해도 됨 리스트의 길이가 가변적이기 때문에 데이터 추가 / 삭제 용이 (메모리 관리 측면) 단점 연결 구조를 위한 별도 데이터 공간이 필요 배열은 인덱스를 통해 바로 데이터에 접근이 가능했으나 연결리스트는 다음 연결해야하는 데이터를 링크로 연결해서 그 링크에 대한 공간이 필요 연결 정보를 찾는 시간이 필요 (메모리 상 연속된 위치가 아니라면, 접근 속도가 상대적으로 느림) 데이터 추가 및 삭제 시 앞뒤 데이터의 연결을 재구성하는 작업 필요 노드 데이터 저장 단위, 값과 포인트로 구성 포인터 : 다음 노드나 이전 노드의..
-
선형자료구조 - 배열알고리즘/이론 2024. 4. 1. 17:36
📌 배열 1. 많은 수의 데이터를 다룰 때 사용하는 자료구조 2. 각 데이터를 인덱스와 1:1 대응하도록 구성 3. 데이터가 메모리 상에 연속적으로 저장 장점 인덱스를 이용하여 데이터에 빠르게 접근 가능 단점 데이터의 추가 / 삭제가 번거로운 편 미리 최대 길이를 정해서 생성해야함 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배열을 생성 데이터 삭제 시 인덱스를 유지하기 위해 빈 공간을 유지해야함 1차원 배열 int[] arr = {1, 2, 3, 4, 5}; for(int item : arr) { System.out.println("item = " + item); } // item = 1 // item = 2 // item = 3 // item = 4 // item = 5 arr[1] = 10..