본문 바로가기
728x90
반응형

코딩테스트10

피보나치 수열(Fibonacci Sequence): 개념부터 실무 적용까지 1. 피보나치 수열(Fibonacci Sequence)이란? 주요 개념과 특징피보나치 수열은 각 숫자가 앞의 두 숫자의 합으로 정의되는 수열입니다. 수학적으로는 F(n) = F(n-1) + F(n-2)로 표현되며, 초기값은 보통 F(0) = 0, F(1) = 1로 설정됩니다.자연, 예술, 건축 등 다양한 분야에서 발견되는 매혹적인 수열이죠. 주요 개념재귀적 정의: 현재 항은 이전 두 항의 합.초기값: F(0) = 0, F(1) = 1.수열 예시: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...시간 복잡도: 단순 재귀는 O(2^n), 동적 프로그래밍(DP)은 O(n).특징단순한 규칙: 앞의 두 항을 더하여 다음 항을 구하는 간단한 규칙을 가집니다.재귀적 정의: 점화식을 통해 재귀적으로 정.. 2025. 4. 6.
너비 우선 탐색(BFS): 개념부터 실무 적용까지 목차1. 너비 우선 탐색(BFS)이란? 주요 개념과 특징BFS는 그래프나 트리에서 **큐(Queue)**를 활용해 시작 노드에서 가까운 노드부터 순차적으로 탐색하는 알고리즘입니다. "너비"라는 이름처럼, 같은 레벨(깊이)에 있는 노드를 먼저 모두 탐색한 뒤 다음 레벨로 넘어갑니다. 주요 개념큐(Queue): 먼저 들어온 노드가 먼저 처리됨(FIFO, First In First Out).방문 체크(Visited): 중복 탐색 방지를 위해 노드 방문 여부를 기록.시간 복잡도: 인접 리스트 사용 시 O(V + E), 여기서 V는 정점 수, E는 간선 수.공간 복잡도: O(V)로 큐와 방문 배열에 사용.특징최단 경로 탐색: 시작 정점에서 다른 정점까지의 최단 경로를 찾는 데 유용합니다 (가중치가 없는 그래프)... 2025. 4. 5.
병합 정렬(Merge Sort) 완벽 분석: 개념부터 실무 적용까지 1. 병합 정렬(Merge Sort)이란? 주요 개념과 특징병합 정렬은 분할 정복(Divide and Conquer) 전략을 사용하는 비교 기반 정렬 알고리즘입니다. 배열을 더 작은 하위 배열로 나누고(Divide), 각각을 정렬한 뒤(Conquer), 다시 합치는(Merge) 과정을 통해 정렬을 완성합니다. 주요 개념분할 정복: 문제를 더 작은 하위 문제로 나눕니다. 배열을 반으로 계속 분할하여 크기가 1인 하위 배열을 만듭니다.비교 기반: 요소 간 비교로 순서를 결정합니다.안정 정렬(Stable Sorting): 동일한 값의 상대적 순서가 유지됩니다.시간 복잡도: 최악, 평균, 최선 모두 O(n log n).공간 복잡도: O(n)으로 추가 메모리 필요합니다.특징안정 정렬(Stable Sort): 동일.. 2025. 4. 5.
삽입 정렬(Insertion Sort) 완벽 정리: 개념부터 실무 적용까지 목차1. 삽입 정렬(Insertion Sort)이란? 용어와 주요 개념삽입 정렬은 배열을 정렬된 부분과 정렬되지 않은 부분으로 나누어, 정렬되지 않은 요소를 하나씩 정렬된 부분에 "삽입"하며 정렬을 완성하는 알고리즘입니다. 카드 게임에서 손에 든 카드를 순서대로 정리하는 방식과 비슷합니다. 주요 개념비교 기반: 요소 간 비교를 통해 순서를 결정.제자리 정렬(In-place Sorting): 추가 메모리 공간이 거의 필요 없음(공간 복잡도 O(1)).안정 정렬(Stable Sorting): 동일한 값의 상대적 순서가 유지됨.시간 복잡도: 최악과 평균은 O(n²), 최선은 O(n).특징적응적(Adaptive): 이미 정렬된 데이터에서는 매우 빠름.온라인 알고리즘: 데이터가 실시간으로 들어와도 처리 가능.단순.. 2025. 4. 4.
선택 정렬(Selection Sort) 완벽 분석: 코딩 테스트부터 실무 활용까지! 1. 선택 정렬(Selection Sort)이란? 용어와 주요 개념코딩 테스트 단골 손님, 선택 정렬! 하지만 "단순하다"는 말에 속아 제대로 공부하지 않으면 큰 코 다칠 수 있습니다.선택 정렬은 비교 기반 정렬 알고리즘으로, 배열에서 가장 작은(또는 큰) 값을 찾아 정렬된 위치에 배치하는 과정을 반복합니다. 이름에서 알 수 있듯, 매번 "선택"하여 정렬을 진행하는 방식입니다. 배열에서 가장 작은 (혹은 큰) 요소를 선택하여 알맞은 위치로 옮기는 과정을 반복합니다. 마치 도서관에서 책을 키 순서대로 정리하는 것과 비슷하다고 보면 됩니다. 주요 개념비교 기반: 두 요소를 비교하여 순서를 결정.제자리 정렬(In-place Sorting): 추가 메모리 공간을 거의 사용하지 않음(공간 복잡도 O(1)).불안정.. 2025. 4. 4.
버블 정렬 (Bubble Sort): 개념부터 실전 코딩까지 완벽 가이드 목차1. 버블 정렬(Bubble Sort)이란? 용어, 개념, 특징1.1 용어 및 정의버블 정렬(Bubble Sort)은 가장 기초적인 정렬 알고리즘 중 하나로, 인접한 두 원소를 비교하여 교환하는 방식으로 정렬을 수행합니다. 정렬이 완료될 때까지 여러 번 배열을 순회하며 큰 값이 점차 뒤쪽으로 이동하는 방식이 거품이 떠오르는 모습과 유사하여 '버블 정렬'이라는 이름이 붙었습니다. 큰 값이 "거품"처럼 배열 끝으로 떠오르는 모습에서 이름이 유래했습니다.1.2 주요 개념비교 기반 정렬: 두 요소를 비교해 순서를 결정.인플레이스 정렬: 추가 메모리 없이 배열 내에서 수행.시간 복잡도: 최악과 평균의 경우 O(n²), 최선의 경우 O(n) (이미 정렬된 경우)공간 복잡도: O(1) (추가적인 메모리 사용이 거.. 2025. 4. 3.
깊이 우선 탐색(DFS): 알고리즘 개념부터 실전 코딩까지 완벽 가이드 목차1. 깊이 우선 탐색(DFS)란?DFS(Depth-First Search, 깊이 우선 탐색)는 그래프 탐색 알고리즘 중 하나로, 가능한 한 깊이 내려가면서 노드를 방문하는 방식입니다. 이 알고리즘은 스택(Stack) 또는 재귀(Recursive) 방식으로 구현되며, 그래프 탐색, 퍼즐 풀이, 경로 찾기 등의 다양한 문제에서 활용됩니다.주요 개념 및 특징스택(Stack) 또는 재귀(Recursion) 사용: DFS는 명시적으로 스택을 사용하거나 재귀 호출을 통해 구현됩니다.깊이 우선 탐색: 한 노드에서 연결된 노드를 우선적으로 깊이 탐색하고, 더 이상 갈 곳이 없으면 되돌아옵니다.경로 탐색 및 백트래킹(Backtracking) 활용: 경로를 저장하거나 되돌아오는 방식을 통해 다양한 문제를 해결할 수 있.. 2025. 4. 3.
이진 탐색(Binary Search): 개념부터 실무 적용까지 완벽 정리! 목차1. 이진 탐색(Binary Search) 개념 및 주요 특징이진 탐색(Binary Search)은 정렬된 배열에서 특정 값을 빠르게 찾는 알고리즘입니다. 일반적인 선형 탐색(Linear Search)보다 **훨씬 빠른 O(log n)**의 시간 복잡도를 가지며, 검색 최적화가 필요한 경우 필수적으로 활용됩니다. 🔹용어 설명중간값(Mid): 탐색 범위의 중간 지점을 기준으로 비교 대상 설정.좌측 포인터(Left): 탐색 범위의 시작점.우측 포인터(Right): 탐색 범위의 끝점.목표값(Target): 찾고자 하는 값. 🔹주요 개념 및 특징전제 조건: 데이터가 정렬되어 있어야 함.동작 원리: 중간값과 목표값을 비교하며 탐색 범위를 절반으로 줄임.시간 복잡도: O(log n) (매번 데이터가 절반으로.. 2025. 4. 2.
퀵 정렬(Quick Sort): 개념부터 실무 적용까지 완벽 정리! 목차1. 퀵 정렬(Quick Sort) 개념 및 주요 특징🔹 용어 설명피벗(Pivot): 배열을 분할하는 기준이 되는 값. 선택 방식에 따라 성능 좌우.분할(Partitioning): 피벗을 기준으로 작은 값과 큰 값으로 나눔.재귀(Recursion): 분할된 하위 배열에 대해 반복적으로 정렬 수행.🔹 주요 개념 및 특징분할 정복(Divide and Conquer): 큰 문제를 작은 문제로 나누어 해결.시간 복잡도:평균: O(n log n)최악: O(n²) (피벗이 항상 최소/최대일 때)최선: O(n log n)공간 복잡도: O(log n) (재귀 호출 스택)특징:제자리 정렬(In-place): 추가 메모리 최소화.불안정 정렬(Unstable): 동일 값의 상대적 순서 보장 안 됨.비교 기반: 요소 .. 2025. 4. 2.
Big O란? 목차Big O 표기법 완벽 정리알고리즘을 배우는 개발자라면 Big O 표기법을 반드시 알아야 합니다. Big O는 알고리즘의 효율성을 평가하는 핵심 도구로, 시간 복잡도와 공간 복잡도를 분석합니다. 1. Big O 란?  ✅ Big O표기법의 기본 개념 Big O 표기법은 알고리즘의 성능을 분석하는 기법으로, 입력 크기(n) 에 따라 실행 시간과 메모리 사용량이 어떻게 변하는지를 설명해 줍니다.시간 복잡도(Time Complexity): 알고리즘이 실행되는 데 걸리는 시간의 증가율을 나타냄.공간 복잡도(Space Complexity): 알고리즘이 실행될 때 필요한 메모리의 증가율을 나타냄.점근적 분석: nnn이 무한히 커질 때의 성능을 기준으로 평가. public int addNumbers(int a, .. 2025. 4. 1.
728x90
반응형