블로그

알고리즘과 자료구조에 대한 심층 가이드

글 47개

동적 계획법

최장 바이토닉 부분 수열 완벽 이해 - 알고노트

올라갔다 내려오는 산 모양 부분 수열을 찾는 최장 바이토닉 부분 수열을 정리합니다. 정방향 LIS와 역방향 LIS를 합치는 O(n²) DP를 알고노트 시각화로 확인하세요.

바이토닉LIS동적계획법코딩테스트알고노트
그리디

원형 주유 문제, 그리디로 한 바퀴 도는 출발점 찾기 - 알고노트

원형으로 배치된 주유소를 한 바퀴 도는 출발점을 O(n) 그리디로 찾는 방법을 정리합니다. 차이값 누적과 출발점 이동 원리를 알고노트 시각화로 확인하세요.

그리디누적합원형배열코딩테스트알고노트
구간합

누적합으로 구간 합 질의 O(1) 응답 - 알고노트

동네 도서관 방문자 데이터로 누적합(prefix sum)을 익혀봅니다. 미리 누적합 배열을 만들어 두면 어떤 구간 [l, r]의 합도 prefix[r+1] - prefix[l] 뺄셈 한 번으로 O(1)에 답할 수 있습니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.

누적합구간합전처리코딩테스트알고노트
정렬

좌표 다중키 정렬 완벽 이해 - 알고노트

(x, y) 좌표를 x 오름차순, 동점이면 y 오름차순으로 정렬하는 다중키 비교 정렬을 정리합니다. 비교 함수 작성법과 동작 과정을 알고노트 시각화로 확인하세요.

다중키정렬좌표정렬비교정렬알고리즘알고노트
동적 계획법

정수를 1로 만들기 - 최소 연산 DP 완벽 이해 (마법 카운터) - 알고노트

÷3, ÷2, −1 세 연산으로 정수 X를 1로 만드는 최소 횟수를 DP로 구합니다. 그리디가 왜 틀리는지, dp[i]=1+min(...) 점화식이 어떻게 정답을 보장하는지 마법 카운터 이야기로 알고노트 시각화와 함께 확인하세요.

DP동적계획법최소연산코딩테스트알고노트
그래프

최소 환승 노선 찾기 - BFS 최단 이동 완벽 이해 (알고노트)

가중치 없는 노선 그래프에서 출발역부터 목적역까지 최소 이동(환승) 횟수를 BFS 레벨 탐색으로 구하는 방법을 정리합니다. 큐·거리 배열의 동작을 알고노트 시각화로 확인하세요.

BFS그래프최단경로최소이동알고노트
탐색

랜선 자르기 - 매개변수 이분탐색 완벽 풀이 | 알고노트

길이가 제각각인 랜선을 같은 길이로 잘라 K개 이상 만드는 최대 조각 길이를, 정답에 대한 이분탐색과 개수 세기로 구합니다. 알고노트 시각화로 단계별로 확인하세요.

매개변수탐색이분탐색랜선자르기코딩테스트알고노트
동적 계획법

2×n 타일링 점화식 완벽 이해 - 알고노트

폭 2칸 복도를 1×2 / 2×1 타일로 채우는 경우의 수를 dp[i]=dp[i-1]+dp[i-2] 점화식으로 푸는 방법을 정리합니다. 피보나치와 똑같은 구조를 알고노트 시각화로 확인하세요.

타일링동적계획법DP점화식알고노트
자료구조

폭탄 문자열 제거 - 스택으로 패턴 터뜨리기 - 알고노트

문자열에서 특정 패턴이 나타날 때마다 제거하기를 반복하는 문제를, 스택으로 O(n)에 푸는 방법을 알아봅니다. 끝부분만 비교하는 핵심 아이디어를 알고노트 시각화로 확인하세요.

스택문자열시뮬레이션코딩테스트알고노트
투 포인터

목표에 가장 가까운 두 수의 합 - 투 포인터로 O(n)에 푸는 법 - 알고노트

정렬된 수열에서 두 수의 합이 목표값에 가장 가까운 쌍을 찾는 문제를, 듀엣 음정 맞추기 이야기로 풀어봅니다. 모든 쌍을 비교하는 O(n²) 대신 양끝 투 포인터로 O(n)에 끝내는 핵심 아이디어를 잡아보세요. 전체 풀이는 알고노트 단계별 시각화로 확인할 수 있습니다.

투 포인터정렬두 수의 합코딩테스트알고노트
탐색

케이크 자르기 - '정답을 이분탐색'하는 매개변수 탐색 - 알고노트

디저트 가게의 시식 코너 문제로 매개변수 탐색을 익혀봅니다. 자를 위치를 직접 고르는 대신, 칼날 높이(정답)를 이분탐색하는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

매개변수 탐색이분탐색결정 문제코딩테스트알고노트
자료구조

이중 연결 리스트 쉽게 이해하기 - 알고노트

이중 연결 리스트가 무엇인지, 단일 연결 리스트와 무엇이 다른지(역방향 순회·O(1) 삭제)를 정리합니다. prev/next 양방향 포인터를 다루는 핵심 접근법을 알고노트 시각화로 확인하세요.

이중 연결 리스트연결 리스트자료구조포인터알고노트
자료구조

스마트폰 앱 관리자 - 최근 N개만 남기는 LRU의 핵심 발상 - 알고노트

"최근 쓴 앱 몇 개만 메모리에 살려두기"라는 익숙한 규칙이 사실은 LRU 캐시입니다. 왜 배열이나 해시맵 하나만으로는 부족한지, 그리고 왜 해시맵 + 이중 연결 리스트 조합이 모든 동작을 O(1)로 만드는지 발상을 잡아봅니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.

LRU캐시해시맵이중 연결 리스트자료구조코딩테스트알고노트
자료구조

세그먼트 트리 - 구간 합 질의와 갱신을 모두 O(log n)에 - 알고노트

값이 자주 바뀌는 배열에서 "구간 합"을 빠르게 구하는 세그먼트 트리의 핵심 아이디어를 잡아봅니다. 왜 누적합(prefix sum)으로는 부족한지, 왜 트리로 구간을 묶는지 그 발상을 소개합니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.

세그먼트 트리구간 합자료구조트리코딩테스트알고노트
정렬

가장 큰 수 만들기 - 숫자 조각을 이어붙이는 커스텀 비교 정렬 - 알고노트

[3, 30, 34, 5, 9]를 이어붙여 가장 큰 수를 만들면? 숫자 크기 순으로 붙이면 틀립니다. 핵심은 "a+b vs b+a" 커스텀 비교예요. 왜 이렇게 비교하는지와 접근법까지 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

가장 큰 수정렬커스텀 비교문자열코딩테스트알고노트
자료구조

다음 더운 날 알림 - 단조 스택(Monotonic Stack)으로 O(n)에 푸는 법 - 알고노트

"오늘보다 더 더운 날이 며칠 뒤에 올까?"를 단조 스택으로 O(n)에 푸는 핵심 아이디어를 잡아봅니다. 왜 이중 반복문(O(n²)) 대신 스택인지, 그 발상을 소개합니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.

단조 스택스택자료구조코딩테스트알고노트
그래프

프림 알고리즘 - 우선순위 큐로 '간선'을 골라 키우는 최소 신장 트리 입문 - 알고노트

프림 알고리즘으로 최소 신장 트리(MST)의 핵심 아이디어를 잡아봅니다. 한 노드에서 출발해 우선순위 큐로 가장 싼 간선을 골라 트리를 키우는 발상과, 다익스트라와 무엇이 다른지를 소개합니다. 전체 단계별 풀이는 알고노트 시각화로 확인하세요.

프림최소 신장 트리MST그래프우선순위 큐알고노트
그래프

토너먼트 순위 결정 - 일부 경기 결과로 순위를 확정하는 플로이드-워셜 응용 - 알고노트

팔씨름 대회에서 일부 경기 결과만 알 때, 순위가 확정되는 선수가 몇 명인지 구하는 문제로 플로이드-워셜의 새로운 쓰임을 익혀봅니다. 최단 거리 대신 "승패 도달 관계"를 채운다는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

플로이드-워셜그래프추이적폐쇄도달성코딩테스트알고노트
그리디

카페 주문 처리 - 왜 짧은 주문부터 만들면 총 대기시간이 최소일까? - 알고노트

오픈런 카페에 손님이 한꺼번에 몰렸을 때, 어떤 주문부터 만들어야 모두의 대기시간 합이 최소가 될까요? 정렬 한 줄로 끝나는 그리디의 직관을 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

그리디정렬누적합코딩테스트알고노트
정렬

셸 정렬 - 삽입정렬에 "간격(gap)"을 더해 빨라지는 정렬 입문 - 알고노트

삽입정렬은 왜 느릴 때가 있을까요? 셸 정렬은 멀리 떨어진 원소부터 정리하는 "간격(gap)" 아이디어로 그 약점을 메웁니다. 왜 gap을 쓰는지와 접근법까지 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

셸 정렬정렬삽입정렬코딩테스트알고노트
탐색

전기차 충전소 배치 - '정답을 이분탐색'하는 매개변수 탐색 입문 - 알고노트

고속도로 충전소 배치 문제로 매개변수 탐색의 핵심 아이디어를 잡아봅니다. 위치를 직접 고르는 대신 정답(최소 거리)을 이분탐색하는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.

매개변수 탐색이분탐색그리디코딩테스트알고노트
정렬

퀵 정렬, 피벗으로 분할하며 제자리 정렬하기 - 알고노트

퀵 정렬의 핵심인 분할(partition) 과정과 평균 O(n log n)·최악 O(n²)이 나오는 이유를 정리합니다. 피벗 선택과 제자리 정렬 원리를 알고노트 시각화로 단계별 확인하세요.

정렬분할정복퀵정렬코딩테스트알고노트
정렬

병합 정렬, 반으로 나눠 정렬 후 합치는 분할 정복 - 알고노트

병합 정렬이 배열을 반으로 나눠 정렬한 뒤 두 정렬된 부분을 합치는 원리와, 항상 O(n log n)을 보장하며 안정 정렬인 이유를 정리합니다. 병합 과정을 알고노트 시각화로 확인하세요.

정렬분할정복병합정렬안정정렬알고노트
문자열

KMP 문자열 검색, 실패 함수로 O(n+m)에 패턴 찾기 - 알고노트

KMP가 실패 함수(부분 일치 테이블)로 이미 비교한 정보를 재활용해 텍스트 포인터를 되돌리지 않고 O(n+m)에 패턴을 찾는 원리를 정리합니다. 단순 검색과의 차이를 알고노트 시각화로 확인하세요.

문자열KMP패턴매칭실패함수알고노트
자료구조

힙(Heap), 최솟값·최댓값을 O(log n)에 꺼내는 우선순위 큐 - 알고노트

힙이 완전 이진 트리를 배열로 표현해 최솟값(또는 최댓값)을 O(log n)에 삽입·삭제하는 원리를 정리합니다. sift-up/down과 우선순위 큐 활용을 알고노트 시각화로 확인하세요.

자료구조우선순위큐이진트리알고노트
자료구조

큐(Queue), 먼저 들어온 것이 먼저 나가는 FIFO 자료구조 - 알고노트

큐가 FIFO(선입선출)로 동작하는 원리와 enqueue·dequeue를 O(1)에 처리하는 원형 큐 구현을 정리합니다. 스택과의 차이, BFS 활용을 알고노트 시각화로 확인하세요.

자료구조FIFO원형큐알고노트
백트래킹

N-퀸 문제, 백트래킹으로 서로 공격 못 하게 퀸 놓기 - 알고노트

N-퀸 문제를 한 행씩 안전한 열에 놓고 막히면 되돌아오는 백트래킹으로 푸는 원리와, 열·대각선 사용 여부로 가지치기하는 법을 정리합니다. 되돌아오기 과정을 알고노트 시각화로 확인하세요.

백트래킹N-퀸가지치기재귀알고노트
자료구조

해시 테이블, 평균 O(1)에 저장·검색하는 원리와 충돌 처리 - 알고노트

해시 테이블이 해시 함수로 키를 인덱스로 바꿔 평균 O(1)에 저장·검색하는 원리와, 충돌을 체이닝·개방 주소법으로 처리하는 방법을 정리합니다. 로드 팩터와 재해싱을 알고노트 시각화로 확인하세요.

자료구조해시해시테이블충돌처리알고노트
자료구조

유니온 파인드(Union-Find), 그룹을 합치고 같은 집합인지 묻기 - 알고노트

유니온 파인드가 원소들의 그룹(집합)을 관리하며 union·find를 거의 O(1)에 처리하는 원리를 정리합니다. 경로 압축과 랭크 합치기 최적화를 알고노트 시각화로 확인하세요.

자료구조유니온파인드서로소집합그래프알고노트
동적 계획법

최장 증가 부분 수열(LIS), O(n log n)에 길이 구하기 - 알고노트

LIS가 수열에서 점점 커지는 가장 긴 부분 수열의 길이를 구하는 문제임을 정리하고, O(n²) DP와 이분탐색 기반 O(n log n) 풀이(tails 배열)를 설명합니다. 두 방법의 차이를 알고노트 시각화로 확인하세요.

DP동적계획법LIS이분탐색알고노트
동적 계획법

0/1 배낭 문제, 담는다·안 담는다를 DP로 푸는 법 - 알고노트

0/1 배낭 문제를 dp[i][w] 상태와 담음/안 담음 점화식으로 O(nW)에 푸는 원리를 정리합니다. 1차원 배열 최적화와 흔한 실수를 알고노트 시각화로 확인하세요.

DP동적계획법배낭문제최적화알고노트
동적 계획법

최장 공통 부분 수열(LCS), 두 수열의 공통 순서를 DP로 찾기 - 알고노트

LCS가 두 수열에서 순서를 유지한 가장 긴 공통 부분 수열을 dp[i][j] 점화식으로 O(mn)에 찾는 원리를 정리합니다. 부분 문자열과의 차이, 역추적 복원을 알고노트 시각화로 확인하세요.

DP동적계획법LCS문자열알고노트
동적 계획법

동전 교환 문제, 최소 동전 개수를 DP로 구하기 - 알고노트

동전 교환 문제에서 그리디가 실패하는 이유와, dp[a]=금액 a의 최소 동전 수 점화식으로 O(금액×동전수)에 푸는 원리를 정리합니다. 도달 불가 처리와 흔한 실수를 알고노트 시각화로 확인하세요.

DP동적계획법동전교환최적화알고노트
투 포인터

슬라이딩 윈도우, 구간을 미끄러뜨려 O(n)에 구간값 유지하기 - 알고노트

슬라이딩 윈도우가 연속 구간을 한 칸씩 미끄러뜨리며 들어오는 값은 더하고 나가는 값은 빼서 구간 합·최대를 O(n)에 유지하는 원리를 정리합니다. 고정/가변 윈도우 차이를 알고노트 시각화로 확인하세요.

투포인터슬라이딩윈도우구간합코딩테스트알고노트
투 포인터

투 포인터, 정렬된 배열을 O(n)에 훑는 두 인덱스 기법 - 알고노트

투 포인터가 정렬된 배열에서 두 인덱스를 움직여 두 수의 합 같은 문제를 O(n)에 푸는 원리와, 단조성 덕분에 정답을 놓치지 않는 이유를 정리합니다. 알고노트 시각화로 확인하세요.

투포인터정렬두수의합코딩테스트알고노트
수학

에라토스테네스의 체, N까지 소수를 한 번에 찾는 법 - 알고노트

에라토스테네스의 체가 소수의 배수를 지워가며 N까지 모든 소수를 O(N log log N)에 찾는 원리를 정리합니다. 왜 p²부터 지우는지, √N에서 멈추는 이유를 알고노트 시각화로 확인하세요.

수학소수에라토스테네스의체정수론알고노트
그래프

위상 정렬, 의존 관계가 있는 작업을 순서대로 세우기 - 알고노트

위상 정렬이 방향 그래프(DAG)에서 모든 간선 u→v에 대해 u가 v보다 앞서도록 정점을 줄 세우는 원리와, 진입차수를 이용한 Kahn 알고리즘을 정리합니다. 사이클 감지를 알고노트 시각화로 확인하세요.

그래프위상정렬DAG진입차수알고노트
그래프

깊이 우선 탐색(DFS), 갈 데까지 들어갔다 되돌아오는 순회 - 알고노트

DFS가 한 방향으로 깊이 들어갔다가 막히면 되돌아오는(백트래킹) 그래프 순회 원리와, 스택·재귀로 구현하는 법, BFS와의 차이를 정리합니다. 방문 표시의 중요성을 알고노트 시각화로 확인하세요.

그래프DFS깊이우선탐색백트래킹알고노트
트리

이진 트리 순회, 전위·중위·후위·레벨 순서 한눈에 - 알고노트

이진 트리의 전위·중위·후위 순회가 "루트를 언제 방문하느냐"의 차이임을 정리하고, 중위 순회가 BST에서 오름차순이 되는 이유와 레벨 순회(BFS)를 설명합니다. 알고노트 시각화로 확인하세요.

트리순회전위중위후위이진트리알고노트
수학

최대공약수와 유클리드 호제법, LCM까지 O(log)에 구하기 - 알고노트

유클리드 호제법이 gcd(a,b)=gcd(b, a mod b)로 최대공약수를 O(log)에 구하는 원리와 왜 성립하는지, 그리고 LCM을 GCD로 구하는 법을 정리합니다. 나머지로 줄어드는 과정을 알고노트 시각화로 확인하세요.

수학최대공약수유클리드호제법정수론알고노트
정렬

힙 정렬, 최대 힙으로 가장 큰 값을 하나씩 빼내기 - 알고노트

힙 정렬이 배열을 최대 힙으로 만든 뒤 루트(최댓값)를 맨 뒤로 빼내며 정렬하는 원리를 정리합니다. heapify와 항상 O(n log n)·제자리 정렬인 이유를 알고노트 시각화로 확인하세요.

정렬힙정렬우선순위큐알고노트
정렬

정렬 알고리즘 완벽 가이드 - 7가지 정렬 비교 - 알고노트

버블 정렬부터 카운팅 정렬까지, 7가지 주요 정렬 알고리즘의 원리와 시간복잡도를 비교합니다. 각 알고리즘을 시각화와 함께 직접 체험해보세요.

정렬알고리즘시간복잡도코딩테스트
탐색

이진 탐색(Binary Search) 완벽 이해 - 알고노트

이진 탐색의 원리, 구현 방법, 시간복잡도를 정리합니다. 정렬된 배열에서 O(log n)으로 값을 찾는 핵심 알고리즘을 알고노트 시각화로 확인하세요.

이진탐색알고리즘코딩테스트O(log n)알고노트
그래프

BFS(너비 우선 탐색) 알고리즘 쉽게 이해하기 - 알고노트

BFS(너비 우선 탐색)의 동작 원리, 큐를 이용한 구현, DFS와의 차이점을 정리합니다. 최단 경로 탐색의 기본이 되는 핵심 그래프 알고리즘을 알고노트에서 시각적으로 학습하세요.

BFS너비 우선 탐색그래프최단 경로알고노트
그래프

다익스트라 알고리즘 쉽게 이해하기 - 알고노트

다익스트라 알고리즘의 동작 원리, 우선순위 큐를 이용한 구현, 시간복잡도를 정리합니다. 가중치 그래프에서 최단 경로를 찾는 핵심 알고리즘을 알고노트 시각화로 확인하세요.

다익스트라최단 경로그래프우선순위 큐알고노트
동적 계획법

피보나치 수열로 배우는 다이나믹 프로그래밍 입문 - 알고노트

다이나믹 프로그래밍(DP)의 핵심 개념을 피보나치 수열로 쉽게 이해합니다. 메모이제이션과 타뷸레이션의 차이, 시간복잡도 개선 과정을 알고노트 시각화로 확인하세요.

다이나믹 프로그래밍DP피보나치메모이제이션알고노트
자료구조

스택(Stack) 자료구조 완벽 정리 - 알고노트

스택 자료구조의 개념, LIFO 원리, 주요 연산, 코딩테스트 활용법을 정리합니다. 괄호 검사, 후위 표기법, 브라우저 뒤로가기 등 실전 예제를 알고노트 시각화로 확인하세요.

스택자료구조LIFO코딩테스트알고노트
블로그 | 알고리즘 학습 가이드 | AlgoNote