최장 바이토닉 부분 수열 완벽 이해 - 알고노트
올라갔다 내려오는 산 모양 부분 수열을 찾는 최장 바이토닉 부분 수열을 정리합니다. 정방향 LIS와 역방향 LIS를 합치는 O(n²) DP를 알고노트 시각화로 확인하세요.
알고리즘과 자료구조에 대한 심층 가이드
글 47개
올라갔다 내려오는 산 모양 부분 수열을 찾는 최장 바이토닉 부분 수열을 정리합니다. 정방향 LIS와 역방향 LIS를 합치는 O(n²) DP를 알고노트 시각화로 확인하세요.
원형으로 배치된 주유소를 한 바퀴 도는 출발점을 O(n) 그리디로 찾는 방법을 정리합니다. 차이값 누적과 출발점 이동 원리를 알고노트 시각화로 확인하세요.
동네 도서관 방문자 데이터로 누적합(prefix sum)을 익혀봅니다. 미리 누적합 배열을 만들어 두면 어떤 구간 [l, r]의 합도 prefix[r+1] - prefix[l] 뺄셈 한 번으로 O(1)에 답할 수 있습니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.
(x, y) 좌표를 x 오름차순, 동점이면 y 오름차순으로 정렬하는 다중키 비교 정렬을 정리합니다. 비교 함수 작성법과 동작 과정을 알고노트 시각화로 확인하세요.
÷3, ÷2, −1 세 연산으로 정수 X를 1로 만드는 최소 횟수를 DP로 구합니다. 그리디가 왜 틀리는지, dp[i]=1+min(...) 점화식이 어떻게 정답을 보장하는지 마법 카운터 이야기로 알고노트 시각화와 함께 확인하세요.
가중치 없는 노선 그래프에서 출발역부터 목적역까지 최소 이동(환승) 횟수를 BFS 레벨 탐색으로 구하는 방법을 정리합니다. 큐·거리 배열의 동작을 알고노트 시각화로 확인하세요.
길이가 제각각인 랜선을 같은 길이로 잘라 K개 이상 만드는 최대 조각 길이를, 정답에 대한 이분탐색과 개수 세기로 구합니다. 알고노트 시각화로 단계별로 확인하세요.
폭 2칸 복도를 1×2 / 2×1 타일로 채우는 경우의 수를 dp[i]=dp[i-1]+dp[i-2] 점화식으로 푸는 방법을 정리합니다. 피보나치와 똑같은 구조를 알고노트 시각화로 확인하세요.
문자열에서 특정 패턴이 나타날 때마다 제거하기를 반복하는 문제를, 스택으로 O(n)에 푸는 방법을 알아봅니다. 끝부분만 비교하는 핵심 아이디어를 알고노트 시각화로 확인하세요.
정렬된 수열에서 두 수의 합이 목표값에 가장 가까운 쌍을 찾는 문제를, 듀엣 음정 맞추기 이야기로 풀어봅니다. 모든 쌍을 비교하는 O(n²) 대신 양끝 투 포인터로 O(n)에 끝내는 핵심 아이디어를 잡아보세요. 전체 풀이는 알고노트 단계별 시각화로 확인할 수 있습니다.
디저트 가게의 시식 코너 문제로 매개변수 탐색을 익혀봅니다. 자를 위치를 직접 고르는 대신, 칼날 높이(정답)를 이분탐색하는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
이중 연결 리스트가 무엇인지, 단일 연결 리스트와 무엇이 다른지(역방향 순회·O(1) 삭제)를 정리합니다. prev/next 양방향 포인터를 다루는 핵심 접근법을 알고노트 시각화로 확인하세요.
"최근 쓴 앱 몇 개만 메모리에 살려두기"라는 익숙한 규칙이 사실은 LRU 캐시입니다. 왜 배열이나 해시맵 하나만으로는 부족한지, 그리고 왜 해시맵 + 이중 연결 리스트 조합이 모든 동작을 O(1)로 만드는지 발상을 잡아봅니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.
값이 자주 바뀌는 배열에서 "구간 합"을 빠르게 구하는 세그먼트 트리의 핵심 아이디어를 잡아봅니다. 왜 누적합(prefix sum)으로는 부족한지, 왜 트리로 구간을 묶는지 그 발상을 소개합니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.
[3, 30, 34, 5, 9]를 이어붙여 가장 큰 수를 만들면? 숫자 크기 순으로 붙이면 틀립니다. 핵심은 "a+b vs b+a" 커스텀 비교예요. 왜 이렇게 비교하는지와 접근법까지 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
"오늘보다 더 더운 날이 며칠 뒤에 올까?"를 단조 스택으로 O(n)에 푸는 핵심 아이디어를 잡아봅니다. 왜 이중 반복문(O(n²)) 대신 스택인지, 그 발상을 소개합니다. 전체 풀이는 알고노트 단계별 시각화로 확인하세요.
프림 알고리즘으로 최소 신장 트리(MST)의 핵심 아이디어를 잡아봅니다. 한 노드에서 출발해 우선순위 큐로 가장 싼 간선을 골라 트리를 키우는 발상과, 다익스트라와 무엇이 다른지를 소개합니다. 전체 단계별 풀이는 알고노트 시각화로 확인하세요.
팔씨름 대회에서 일부 경기 결과만 알 때, 순위가 확정되는 선수가 몇 명인지 구하는 문제로 플로이드-워셜의 새로운 쓰임을 익혀봅니다. 최단 거리 대신 "승패 도달 관계"를 채운다는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
오픈런 카페에 손님이 한꺼번에 몰렸을 때, 어떤 주문부터 만들어야 모두의 대기시간 합이 최소가 될까요? 정렬 한 줄로 끝나는 그리디의 직관을 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
삽입정렬은 왜 느릴 때가 있을까요? 셸 정렬은 멀리 떨어진 원소부터 정리하는 "간격(gap)" 아이디어로 그 약점을 메웁니다. 왜 gap을 쓰는지와 접근법까지 잡아봅니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
고속도로 충전소 배치 문제로 매개변수 탐색의 핵심 아이디어를 잡아봅니다. 위치를 직접 고르는 대신 정답(최소 거리)을 이분탐색하는 발상을 소개합니다. 전체 풀이 과정은 알고노트 단계별 시각화로 확인하세요.
퀵 정렬의 핵심인 분할(partition) 과정과 평균 O(n log n)·최악 O(n²)이 나오는 이유를 정리합니다. 피벗 선택과 제자리 정렬 원리를 알고노트 시각화로 단계별 확인하세요.
병합 정렬이 배열을 반으로 나눠 정렬한 뒤 두 정렬된 부분을 합치는 원리와, 항상 O(n log n)을 보장하며 안정 정렬인 이유를 정리합니다. 병합 과정을 알고노트 시각화로 확인하세요.
KMP가 실패 함수(부분 일치 테이블)로 이미 비교한 정보를 재활용해 텍스트 포인터를 되돌리지 않고 O(n+m)에 패턴을 찾는 원리를 정리합니다. 단순 검색과의 차이를 알고노트 시각화로 확인하세요.
힙이 완전 이진 트리를 배열로 표현해 최솟값(또는 최댓값)을 O(log n)에 삽입·삭제하는 원리를 정리합니다. sift-up/down과 우선순위 큐 활용을 알고노트 시각화로 확인하세요.
큐가 FIFO(선입선출)로 동작하는 원리와 enqueue·dequeue를 O(1)에 처리하는 원형 큐 구현을 정리합니다. 스택과의 차이, BFS 활용을 알고노트 시각화로 확인하세요.
N-퀸 문제를 한 행씩 안전한 열에 놓고 막히면 되돌아오는 백트래킹으로 푸는 원리와, 열·대각선 사용 여부로 가지치기하는 법을 정리합니다. 되돌아오기 과정을 알고노트 시각화로 확인하세요.
해시 테이블이 해시 함수로 키를 인덱스로 바꿔 평균 O(1)에 저장·검색하는 원리와, 충돌을 체이닝·개방 주소법으로 처리하는 방법을 정리합니다. 로드 팩터와 재해싱을 알고노트 시각화로 확인하세요.
유니온 파인드가 원소들의 그룹(집합)을 관리하며 union·find를 거의 O(1)에 처리하는 원리를 정리합니다. 경로 압축과 랭크 합치기 최적화를 알고노트 시각화로 확인하세요.
LIS가 수열에서 점점 커지는 가장 긴 부분 수열의 길이를 구하는 문제임을 정리하고, O(n²) DP와 이분탐색 기반 O(n log n) 풀이(tails 배열)를 설명합니다. 두 방법의 차이를 알고노트 시각화로 확인하세요.
0/1 배낭 문제를 dp[i][w] 상태와 담음/안 담음 점화식으로 O(nW)에 푸는 원리를 정리합니다. 1차원 배열 최적화와 흔한 실수를 알고노트 시각화로 확인하세요.
LCS가 두 수열에서 순서를 유지한 가장 긴 공통 부분 수열을 dp[i][j] 점화식으로 O(mn)에 찾는 원리를 정리합니다. 부분 문자열과의 차이, 역추적 복원을 알고노트 시각화로 확인하세요.
동전 교환 문제에서 그리디가 실패하는 이유와, dp[a]=금액 a의 최소 동전 수 점화식으로 O(금액×동전수)에 푸는 원리를 정리합니다. 도달 불가 처리와 흔한 실수를 알고노트 시각화로 확인하세요.
슬라이딩 윈도우가 연속 구간을 한 칸씩 미끄러뜨리며 들어오는 값은 더하고 나가는 값은 빼서 구간 합·최대를 O(n)에 유지하는 원리를 정리합니다. 고정/가변 윈도우 차이를 알고노트 시각화로 확인하세요.
투 포인터가 정렬된 배열에서 두 인덱스를 움직여 두 수의 합 같은 문제를 O(n)에 푸는 원리와, 단조성 덕분에 정답을 놓치지 않는 이유를 정리합니다. 알고노트 시각화로 확인하세요.
에라토스테네스의 체가 소수의 배수를 지워가며 N까지 모든 소수를 O(N log log N)에 찾는 원리를 정리합니다. 왜 p²부터 지우는지, √N에서 멈추는 이유를 알고노트 시각화로 확인하세요.
위상 정렬이 방향 그래프(DAG)에서 모든 간선 u→v에 대해 u가 v보다 앞서도록 정점을 줄 세우는 원리와, 진입차수를 이용한 Kahn 알고리즘을 정리합니다. 사이클 감지를 알고노트 시각화로 확인하세요.
DFS가 한 방향으로 깊이 들어갔다가 막히면 되돌아오는(백트래킹) 그래프 순회 원리와, 스택·재귀로 구현하는 법, BFS와의 차이를 정리합니다. 방문 표시의 중요성을 알고노트 시각화로 확인하세요.
이진 트리의 전위·중위·후위 순회가 "루트를 언제 방문하느냐"의 차이임을 정리하고, 중위 순회가 BST에서 오름차순이 되는 이유와 레벨 순회(BFS)를 설명합니다. 알고노트 시각화로 확인하세요.
유클리드 호제법이 gcd(a,b)=gcd(b, a mod b)로 최대공약수를 O(log)에 구하는 원리와 왜 성립하는지, 그리고 LCM을 GCD로 구하는 법을 정리합니다. 나머지로 줄어드는 과정을 알고노트 시각화로 확인하세요.
힙 정렬이 배열을 최대 힙으로 만든 뒤 루트(최댓값)를 맨 뒤로 빼내며 정렬하는 원리를 정리합니다. heapify와 항상 O(n log n)·제자리 정렬인 이유를 알고노트 시각화로 확인하세요.
버블 정렬부터 카운팅 정렬까지, 7가지 주요 정렬 알고리즘의 원리와 시간복잡도를 비교합니다. 각 알고리즘을 시각화와 함께 직접 체험해보세요.
이진 탐색의 원리, 구현 방법, 시간복잡도를 정리합니다. 정렬된 배열에서 O(log n)으로 값을 찾는 핵심 알고리즘을 알고노트 시각화로 확인하세요.
BFS(너비 우선 탐색)의 동작 원리, 큐를 이용한 구현, DFS와의 차이점을 정리합니다. 최단 경로 탐색의 기본이 되는 핵심 그래프 알고리즘을 알고노트에서 시각적으로 학습하세요.
다익스트라 알고리즘의 동작 원리, 우선순위 큐를 이용한 구현, 시간복잡도를 정리합니다. 가중치 그래프에서 최단 경로를 찾는 핵심 알고리즘을 알고노트 시각화로 확인하세요.
다이나믹 프로그래밍(DP)의 핵심 개념을 피보나치 수열로 쉽게 이해합니다. 메모이제이션과 타뷸레이션의 차이, 시간복잡도 개선 과정을 알고노트 시각화로 확인하세요.
스택 자료구조의 개념, LIFO 원리, 주요 연산, 코딩테스트 활용법을 정리합니다. 괄호 검사, 후위 표기법, 브라우저 뒤로가기 등 실전 예제를 알고노트 시각화로 확인하세요.