전체 글(189)
-
[알고리즘] BFS(너비 우선 탐색)와 DFS(깊이 우선 탐색)
그래프 탐색은 데이터를 구조화하고 처리하는 데 필수적인 알고리즘이다.그중 BFS(너비 우선 탐색)와 DFS(깊이 우선 탐색)는 가장 널리 사용되는 그래프 탐색 기법이다.1. BFS와 DFS란? BFS(Breadth-First Search, 너비 우선 탐색) 그래프를 탐색할 때 가까운 노드부터 차례대로 방문하는 방식큐(Queue)를 사용하여 구현 DFS(Depth-First Search, 깊이 우선 탐색)그래프를 탐색할 때 깊은 경로를 우선적으로 탐색하는 방식스택(Stack)이나 재귀를 사용하여 구현2.BFS와 DFS의 동작 원리BFS의 동작 원리1. 시작 노드를 큐에 추가하고 방문 처리한다.2. 큐에서 노드를 하나 꺼내고, 해당 노드에 연결된 모든 인접 노드를 큐에 추가하여 방문 처리한다.3. 큐가 빌 ..
2024.12.21 -
[알고리즘] 탐욕 알고리즘(Greedy Algorithm)
탐욕 알고리즘(Greedy Algorithm)이란?정의: 현재 단계에서 가장 최적이라고 생각되는 선택을 반복적으로 수행하여 최종 해답을 구하는 알고리즘이다.특징: 1. 탐욕적 선택 속성(Greedy Choice Property): 현재 단계에서의 최적 선택이 전체 문제의 최적해로 이어질 수 있어야 한다.2. 최적 부분 구조(Optimal Substructure): 문제를 작은 부분 문제로 나눴을 때, 각 부분 문제의 최적해가 전체 문제의 최적해를 구성해야 한다.동작 원리1. 문제를 부분 문제로 나눈다.2. 각 단계에서 현재 상황에서 가장 최적의 선택을 수행한다.3. 최적의 해가 완성될 때까지 이 과정을 반복한다.장단점- 장점: - 구현이 간단하고 직관적이다. - 일부 문제에서는 다른 알고리즘보다 ..
2024.12.21 -
[자료구조] ArrayList와 LinkedList의 차이 (Java)
ArrayList와 LinkedList는 둘 다 Java에서 제공하는 List 인터페이스를 구현한 클래스이다.하지만 내부 구조와 동작 방식이 달라 특정 상황에서 성능 차이가 난다.1. 내부 구조ArrayList내부적으로 동적 배열을 사용한다.요소는 연속된 메모리 공간에 저장된다.크기가 부족하면 자동으로 배열 크기를 늘려 새로운 메모리 공간에 복사한다.장단점- 장점 - 임의 접근(get, set)이 빠르다.(O(1)) - 데이터가 적고 삽입/삭제 작업이 적을 경우 효율적이다. - 메모리 사용량이 적다(포인터가 없기 때문에)- 단점 - 배열 크기를 늘리는 작업(재할당)이 발생하면 비용이 든다. - 중간 또는 앞에서 요소를 삽입/삭제할 때 모든 이후 요소를 이동해야 하므로 비용이 크다.Arr..
2024.12.21 -
[알고리즘] 이진 탐색(Binary Search)
이진 탐색(Binary Search)이란?정의: 이진 탐색은 정렬된 배열에서 값을 찾는 알고리즘으로, 검색 범위를 절반씩 좁혀가며 값을 탐색한다.특징- 배열 또는 리스트가 정렬되어 있어야 한다.- 탐색 범위를 매번 절반으로 줄이므로 매우 빠르다.장단점- 장점 - 정렬된 데이터에서 매우 빠름 - O(log n)의 시간 복잡도로 대용량 데이터 처리 가능- 단점 - 데이터가 반드시 정렬되어 있어야 함 - 재귀 방식에서는 스택 오버플로우 위험이진 탐색의 동작 원리1. 시작점(Start)과 끝점(End)을 설정한다. 2. 중간점(Mid)을 계산한다: Mid = (Start + End) / 2 3. 중간점의 값과 목표값(Target)을 비교한다.중간점 값 == 목표값 -> 검색 성공중간점 값 검색..
2024.12.08 -
[자료구조] 해시 테이블(Hash Table)
1. 해시 테이블(Hash Table)이란?정의: 해시 테이블은 키(Key)를 해시 함수를 통해 인덱스(Index)로 변환하여 데이터를 저장하는 자료구조이다.특징- 키-값(Key-Value) 쌍으로 데이터를 저장- 빠른 데이터 접근 속도(O(1), 평균)- 충돌(Collision)이 발생할 수 있으며, 이를 해결하기 위한 방법이 필요장단점- 장점 - 데이터 삽입, 검색, 삭제가 평균적으로 매우 빠름(O(1)) - 대용량 데이터 관리에 적합- 단점 - 해시 함수 품질에 따라 성능이 좌우됨 - 충돌이 많으면 성능 저하해시 테이블의 주요 구성 요소1. 해시 함수(Hash Function)입력 값을 고정된 크기의 출력 값(해시 값)으로 변환목표: 입력 값을 균일하게 분산시켜 충돌을 최소화2. 버킷..
2024.12.08 -
[자료구조] 힙(Heap)
힙(Heap)이란?정의: 힙은 완전 이진 트리의 일종으로, 우선순위 큐(Priority Queue)를 구현하는 데 자주 사용되는 구조이다.특징- 힙 속성(Heap Property)을 만족한다. - 최대 힙(Max-Heap): 부모 노드의 값이 항상 자식 노드보다 크거나 같다. - 최소 힙(Min-Heap): 부모 노드의 값이 항상 자식 노드보다 작거나 같다.- 완전 이진 트리 형태를 유지한다.장단점- 장점 - 효율적인 삽입 및 삭제 연산 - 최댓값 또는 최솟값을 빠르게 찾을 수 있음- 단점 - 트리의 균형을 유지해야 하므로 구현 복잡성이 있음 - 배열 기반 구현에서는 추가 메모리 사용 가능힙의 종류최대 힙(Max-Heap): 가장 큰 값이 루트 노드에 위치최소 힙(Min-Heap):..
2024.12.03