Dev/Algorithm 15

Hash

해시맵 (HashMap)과 해시셋 (HashSet)HashMap과 HashSet은 모두 자바에서 java.util 패키지에 포함된 컬렉션 클래스입니다. 둘 다 해시 테이블을 기반으로 하며, 빠른 검색, 삽입, 삭제 등을 지원합니다. 그러나 이 둘은 목적과 사용 방식에서 차이가 있습니다.1. HashMapHashMap은 키와 값의 쌍으로 데이터를 저장하는 컬렉션입니다. 이 클래스는 해시 테이블을 사용하여 키를 기반으로 값을 검색하거나 삽입할 때 매우 효율적입니다.- 키와 값: 각 항목은 키-값 쌍으로 저장됩니다.- 순서 없음: HashMap은 저장된 순서를 보장하지 않습니다. 즉, 입력된 순서와는 관계없이 요소가 저장될 수 있습니다.- 중복된 키 불허: HashMap은 동일한 키를 여러 번 저장할 수 없으..

Dev/Algorithm 2024.12.19

정렬

1. 버블 정렬 (Bubble Sort)   - 작동 원리: 인접한 두 원소를 비교하여 크기가 잘못된 순서일 경우 서로 교환하는 방식으로 정렬합니다. 이 과정을 반복하여 전체 리스트가 정렬될 때까지 진행합니다.   - 시간 복잡도: 최악과 평균 시간 복잡도는 O(n²), 최선은 O(n) (이미 정렬된 경우)   - 공간 복잡도: O(1) public class BubbleSort { public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i arr[j + 1]) { // Swap arr[j] and arr[j + 1] ..

Dev/Algorithm 2024.12.16

Queue

1. offer(E e)설명: 큐의 뒤쪽에 요소를 추가합니다. 큐가 공간이 부족하거나 특정 조건에서 삽입이 불가능할 경우 false를 반환할 수 있습니다.반환값: true (요소가 성공적으로 삽입되었을 때), false (삽입 실패) 사용 예시:Queue queue = new LinkedList();queue.offer(1); // 큐에 1을 추가queue.offer(2); // 큐에 2를 추가2. poll()설명: 큐의 앞쪽에서 요소를 꺼내면서 삭제합니다. 큐가 비어 있을 경우 null을 반환합니다.반환값: 큐에서 꺼낸 요소 (큐가 비어 있으면 null)사용 예시:Integer element = queue.poll(); // 큐에서 첫 번째 요소를 꺼내고 삭제System.out.println(el..

Dev/Algorithm 2024.11.14

BFS

BFS(너비 우선 탐색, Breadth-First Search) 알고리즘BFS는 그래프 또는 트리에서 너비 우선으로 노드를 탐색하는 알고리즘입니다. BFS는 시작 노드에서 출발하여, 그 노드와 연결된 노드들을 먼저 모두 탐색하고, 그 후에 각 노드에서 연결된 노드를 차례대로 탐색합니다. 이 과정은 큐(Queue) 자료구조를 이용하여 구현합니다.BFS의 주요 특징은 가까운 노드부터 차례대로 탐색하므로, 목표 노드까지의 최단 경로를 찾는 데 유용합니다. BFS 동작 방식:1. 시작 노드를 큐에 넣습니다.2. 큐에서 노드를 하나 꺼내고, 그 노드를 방문합니다.3. 그 노드에 연결된 인접 노드들을 큐에 넣습니다.4. 큐가 비어 있을 때까지 2번과 3번을 반복합니다.5. 모든 노드를 방문할 때까지 탐색을 계속합니..

Dev/Algorithm 2024.11.13

DFS

DFS(Depth-First Search, 깊이 우선 탐색) 알고리즘 DFS는 그래프나 트리에서 깊이 우선으로 노드를 탐색하는 방법입니다. DFS는 한 번에 가능한 한 깊이 내려가다가 더 이상 내려갈 곳이 없으면 이전 단계로 돌아가서 다른 경로를 탐색하는 방식입니다. DFS는 트리나 그래프의 구조를 탐색할 때 유용하며, 경로 탐색, 미로 찾기, 사이클 탐지 등의 문제에서 활용될 수 있습니다. DFS 동작 방식:1. 시작 노드에서 시작하여, 그 노드와 연결된 노드들을 깊이 우선으로 탐색합니다.2. 방문한 노드는 다시 방문하지 않도록 표시합니다.3. 더 이상 방문할 노드가 없으면, 이전 노드로 돌아가서 탐색을 계속합니다.4. 모든 노드를 탐색할 때까지 이 과정을 반복합니다.DFS의 특징:- 시간 복잡도: 그..

Dev/Algorithm 2024.11.13