CS(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 -
[자료구조] 정렬(Sorting)
정렬(Sorting)이란?정의: 데이터를 특정 기준에 따라 순서대로 나열하는 과정장점:- 검색과 탐색 속도 향상- 데이터 구조 내에서 일관성을 유지정렬 방식- 오름차순(Ascending Order)- 내림차순(Descending Order)정렬 알고리즘의 분류1. 비교 기반 정렬(Comparison Sort)데이터를 비교하며 정렬버블 정렬, 삽입 정렬, 선택 정렬, 퀵 정렬, 병합 정렬2. 비교 비기반 정렬(Non-Comparison Sort)데이터를 비교하지 않고 정렬계수 정렬, 기수 정렬버블 정렬(Bubble Sort)정의: 인접한 두 원소를 비교하여 교환하는 방식으로 정렬. 가장 큰 값이 반복적으로 뒤로 이동특징- 단순한 정렬 알고리즘- 정렬이 거의 되어 있는 경우 유리시간 복잡도- 최선: O(n)..
2024.12.03