목록algorithm/CodingTest (26)
on my way
최소 신장 트리(MST)는 그래프 이론에서 사용되는 개념으로, 최소한의 비용으로 그래프의 모든 노드를 연결하는 트리를 의미합니다.이 글에서는 MST의 기본 개념, 유명한 알고리즘, Python 구현 방법, 그리고 코딩 테스트에서 어떻게 활용될 수 있는지에 대해 알아보겠습니다.1. 최소 신장 트리(MST)란?그래프에서 신장 트리(Spanning Tree)는 그래프의 모든 노드를 포함하면서 사이클이 없는 트리 구조입니다.이 중에서 최소 신장 트리(Minimum Spanning Tree)는 모든 노드를 연결하는 트리들 중에서 간선의 가중치 합이 가장 작은 트리를 의미합니다. 가중치 그래프: 노드 간의 연결 비용(간선의 가중치)이 있는 그래프.MST의 조건:사이클이 없다.그래프의 모든 노드를 포함한다.간선의 가..
1. 정렬의 기본 개념정렬(Sorting)이란 데이터를 특정한 기준에 따라 순서대로 나열하는 과정을 말합니다.정렬된 데이터는 탐색, 검색, 최적화 문제 등에서 빠르고 효율적인 처리의 기초가 됩니다. 정렬 알고리즘은 크게 비교 기반 정렬(Comparison-based Sorting)과 비교 기반이 아닌 정렬(Non-comparison-based Sorting)로 나눌 수 있습니다.비교 기반 정렬: 데이터 간의 비교를 통해 정렬을 수행합니다. 예를 들어, 버블 정렬, 퀵 정렬, 병합 정렬 등이 이에 해당합니다.비교 기반이 아닌 정렬: 데이터를 비교하지 않고 정렬을 수행합니다. 예를 들어, 카운팅 정렬, 기수 정렬 등이 이에 해당합니다.2. Python에서의 기본 정렬 함수Python에서는 sorted() 함..
Python 코딩테스트 08: 다이나믹 프로그래밍(DP)다이나믹 프로그래밍(Dynamic Programming, DP)은 큰 문제를 작은 문제로 나누어 푸는 방법론입니다.이 방법론은 작은 문제들의 해답을 이용해 큰 문제의 해답을 찾는 과정에서 효율적인 메모리 사용과 계산 속도 향상을 목표로 합니다. DP는 주로 두 가지 속성을 가지는 문제에 적합합니다:최적 부분 구조(Optimal Substructure)와 중복되는 부분 문제(Overlapping Subproblems)입니다.다이나믹 프로그래밍의 기본 원리최적 부분 구조 (Optimal Substructure)문제를 작은 하위 문제들로 나누고, 이 하위 문제들의 해답을 이용하여 원래 문제의 해답을 도출할 수 있는 속성입니다.예를 들어, 피보나치 수열의 ..
다익스트라 알고리즘(Dijkstra's Algorithm) 이해하기다익스트라 알고리즘은 그래프 이론에서 가장 널리 사용되는 알고리즘 중 하나로, 단일 출발점에서 모든 다른 노드까지의 최단 경로를 찾는 알고리즘입니다.이 포스팅에서는 다익스트라 알고리즘의 원리, 작동 방식, 그리고 다양한 활용 사례와 함께 이를 실제 문제에 적용하는 방법을 자세히 설명하겠습니다. 다익스트라 알고리즘의 개념다익스트라 알고리즘은 네덜란드의 컴퓨터 과학자 에츠허르 다익스트라(Edsger Dijkstra)가 1956년에 고안한 알고리즘입니다.이 알고리즘은 가중치가 있는 그래프에서 최단 경로를 찾는 데 사용됩니다.다익스트라 알고리즘은 다음과 같은 특징을 가지고 있습니다:단일 출발점 최단 경로(Single-Source Shortest ..
백트래킹(Backtracking) 알고리즘: 개념, 원리, 사용법 및 팁백트래킹(Backtracking)은 코딩 테스트와 알고리즘 문제 해결에서 매우 유용한 기법 중 하나이다.백트래킹의 기본 개념과 원리, 활용 방법, 그리고 다양한 예시를 통해 백트래킹을 보다 쉽게 이해하고 적용할 수 있도록 자세히 설명해 보겠다.백트래킹(Backtracking) 개념백트래킹은 가능한 모든 경우의 수를 체계적으로 탐색하여 문제를 해결하는 알고리즘이다.주어진 문제의 해를 찾기 위해 후보 해를 하나씩 만들어가며, 해당 후보가 조건에 맞지 않으면 이전 단계로 돌아가 다른 후보를 시도하는 방식이다.이를 통해 탐색 공간을 효율적으로 줄여가며 최적의 해를 찾을 수 있다. 백트래킹의 원리백트래킹의 기본 원리는 다음과 같다:초기화: 문..
투포인터와 슬라이딩 윈도우 알고리즘: 개념, 특징, 활용코딩 테스트에서 배열이나 리스트와 같은 연속된 데이터 구조를 다룰 때, 투포인터(Two Pointer)와 슬라이딩 윈도우(Sliding Window)는 매우 유용한 알고리즘 기법입니다.이번 포스팅에서는 이 두 가지 기법을 자세히 설명하고, 예제 문제를 통해 어떻게 활용할 수 있는지 알아보겠습니다. 투포인터 (Two Pointer)개념 설명투포인터는 두 개의 포인터를 사용하여 배열이나 리스트의 특정 구간을 탐색하는 기법입니다.이 기법은 주로 정렬된 배열에서 특정 조건을 만족하는 부분 배열이나 값을 찾는 데 사용됩니다.두 포인터는 일반적으로 시작점과 끝점을 나타내며, 조건에 따라 포인터를 이동시키면서 문제를 해결합니다. 특징효율성: O(n) 시간 복잡도..