벨만-포드 알고리즘(Bellman-Ford Algorithm)

벨만-포드 알고리즘(Bellman-Ford Algorithm)은 음의 가중치를 허용하는 최단 경로 찾기 알고리즘입니다. 다익스트라 알고리즘과 달리 음의 가중치가 있어도 동작하지만, 음의 사이클(negative weight cycle)이 존재할 경우 경로를 제대로 계산할 수 없습니다. 이 알고리즘은 단일 시작점에서 다른 모든 정점까지의 최단 거리를 구할 수 있습니다. 벨만-포드 알고리즘 예제 주요 코드: 사용 예제: 출력 결과: 개요 용어 정리 핵심 아이디어 벨만-포드 … Read more

투 포인터 알고리즘 (Two Pointers)

투 포인터 알고리즘은 알고리즘 문제 풀이에서 자주 사용되는 기법입니다. 선형 자료구조(배열, 문자열 등)에서 특정 조건을 만족하는 부분을 빠르게 찾을 수 있습니다. 이번 포스트에서는 투 포인터 알고리즘에 대해 자세히 알아보겠습니다. 투 포인터 알고리즘이란? 이는 두 개의 포인터를 사용해 배열을 탐색하는 방식입니다. 기본 개념 포인터란? 투 포인터 구조 대표적인 구조는 다음과 같습니다: 큰 흐름은 배열을 처음부터 탐색하는데 … Read more

다익스트라 알고리즘 (Dijkstra’s Algorithm)

다익스트라 알고리즘(Dijkstra’s Algorithm)은 그래프의 한 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘입니다. 음의 가중치가 없는 그래프에서만 동작하며 대표적인 최단 경로 탐색 알고리즘입니다. 다익스트라 알고리즘 예제 우선순위 큐 사용 예제 예제 그래프 다익스트라 알고리즘 설명 PriorityQueue는 다익스트라 알고리즘에서 가장 가까운 노드를 선택하기 위해 사용됩니다. 이번 예제에서는 배열 정렬을 사용하지만 성능이 중요한 상황에서는 최소 힙 구조를 … Read more

슬라이딩 윈도우 알고리즘 (Sliding Window)

슬라이딩 윈도우(Sliding Window) 알고리즘은 배열이나 문자열을 다룰 때, 일정한 크기의 창(window)을 좌우로 움직이며 데이터를 처리하는 알고리즘 기법입니다. 이는 주로 연속된 부분 배열에서의 합, 최대/최소값, 조건 만족 여부 등을 빠르게 구할 때 사용합니다. 이 알고리즘은 성능 향상을 원할 때 아주 유용하게 사용할 수 있고 중복된 계산은 피하면서 연속된 데이터 조각을 효율적으로 처리할 수 있습니다. 주요 개념 … Read more