멋사 부트캠프/자료구조
-
07. 그래프(Graph)멋사 부트캠프/자료구조 2025. 5. 15. 11:33
1. 그래프란?규칙 정리)1) 2개 이상의 경로가 가능하다.2) 노드들 사이에 무방향/방향에서 양방향 경로를 가질 수 있다.3) 루트 노드라는 개념이 없다. (= 루트노드는 트리)4) 순회는 DFS나 BFS로 이루어진다.5) 그래프는 순환(Cyclic) 혹은 비순환(Acyclic)이다.6) 그래프는 크게 방향 그래프와 무방향 그래프가 있다. 2. 용어 정리1) 정점(Vertex) - 노드(node) 라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 2) 간선(Edge) - 정점(노드)를 연결하는 선으로 link, branch 라고도 부른다. * 간선의 종류📍 무방향 간선방향 없음. A-B면 B-A도 가능친구 관계➡️ 방향 간선방향 있음. A → B만 가능팔로우 관계🧮 가중..
-
05. 큐(Queue)멋사 부트캠프/자료구조 2025. 5. 15. 09:15
1. 큐 구조 선입선출(FIFO)처음에 들어온 것이 먼저 나가는 구조이다. 주로 우선순위대로 처리해주는 네트워크 패킷 처리, 이벤트 실시간 처리에 활용된다. 2. 큐의 구현enqueue(item)큐에 아이템을 뒤에 추가dequeue()큐에서 아이템을 앞에서 제거하고 반환peek()큐의 맨 앞 데이터를 확인 (삭제 X)isEmpty()큐가 비어 있는지 확인size()큐의 길이 확인enqueue → [ A, B, C ] → dequeue → [ B, C ]import java.util.Queue;import java.util.LinkedList;public class QueueWithJava { public static void main(String[] args) { Queue q = new Linked..
-
04. Stack멋사 부트캠프/자료구조 2025. 5. 4. 14:07
1. Stack 이란? 2. Stack의 활용(with Java) * isEmpty() : 배열이 비어 있는지 확인 (top == -1 인지 조건검사) * isFull() : 배열이 꽉차 있는지 확인 (top == length-1 인지 조건검사) * peek() : 현재 위치(맨위)의 데이터를 조회만 함. * pop() : 현재 위치(맨위)의 데이터를 조회한 후 리턴하고 삭제하며, top을 한칸 내린다. * push() : 현재 스택이 꽉차 있는지 검사한 후, 아니라면 top을 한칸 올리고 해당 내용을 추가한다.import java.util.Stack;public class StackWithJava { public static void main(String[] args) {..
-
03. 연결리스트멋사 부트캠프/자료구조 2025. 4. 17. 22:33
1. 연결리스트 구조 head : 최초에 노드의 주소를 담으며 더미노드(아무것도 없는 빈 껍데기 노드)를 만들어 구현한다. -> Node { int data, Node next } -> 가리키는 주소가 절대 변경되면 안된다. (링크가 깨짐) Tail : 이중 연결리스트에 필요, 노드의 맨 끝을 가리킨다. key(data) : data를 담을 일반 변수next(&) : 다음 노드의 주소를 담을 포인터 변수(Java 에서는 포인터변수 개념이 없기 때문에 객체로 대체한다.) => 위의 개념을 바탕으로 [삽입,삭제,탐색]을 구현한다. => 맨뒤에 삽입(addLast), 맨앞에 삽입(addFirst), 맨뒤에 삭제(removeLast), 맨앞에 삭제(removeFisrt), ..
-
02. Array 활용멋사 부트캠프/자료구조 2025. 3. 19. 17:58
1. Arrays vs ArrayList 비교표 구분 Arrays (배열) ArrayList (동적 배열)크기 변경❌ 불가능 (고정 크기)✅ 가능 (자동 조정)데이터 타입기본형(Primitive) & 객체 가능객체(Reference type)만 가능속도✅ 빠름 (메모리 연속 할당)❌ 상대적으로 느림 (배열 복사 필요)제네릭 지원❌ 미지원✅ 지원 (ArrayList 등)데이터 추가/삭제❌ 불가능 (new로 새 배열 생성 필요)✅ add(), remove() 사용 가능인덱스로 접근✅ arr[i]✅ list.get(i)정렬 및 변환Arrays.sort() 지원Collections.sort() 사용구현 방식Java 기본 자료구조List 인터페이스의 구현체대표적인 메서드Arrays.sort(), Arrays...
-
01. 자료구조 요약 정리멋사 부트캠프/자료구조 2025. 3. 19. 17:48
1. 자료구조의 분류 체계 * 자료구조의 소요 시간표( Big-O 표기법) 성능 최적화의 핵심시간 복잡도: 효율적인 알고리즘을 사용해서 작업을 얼마나 빠르게 처리할 수 있는지. 예를 들어, 리스트 순차 탐색을 최적화하거나 불필요한 반복을 줄이는 방법.공간 복잡도: 메모리를 얼마나 효율적으로 사용할 것인지. 불필요한 데이터나 객체를 생성하지 않도록 관리하는 방법.코드의 가독성: 성능을 추구하더라도 코드가 지나치게 복잡해지면 나중에 다른 사람이 이해하기 어려워지니까, 항상 가독성과 유지보수성도 중요해. 2. 자료 구조 요약 정리1) Array (배열)동일한 타입의 데이터들을 저장하며, 고정된..