태그: 코딩테스트
27편
-
배열과 연결 리스트: 메모리 구조, 연산별 시간 복잡도, 코딩 테스트 활용
배열과 연결 리스트가 메모리에 놓이는 방식 때문에 인덱스 접근, 중간 삽입·삭제의 비용이 어떻게 달라지는지 설명하고, 투 포인터·슬라이딩 윈도우로 배열 회전, 중복 제거, k번째 큰 수 같은 문제를 Python과 C++로 풉니다.
-
트리 자료구조: 이진 트리, 이진 탐색 트리(BST), 전위·중위·후위 순회
루트·자식·높이 같은 트리 용어부터 전위·중위·후위·레벨 순회, 이진 탐색 트리의 삽입과 검색까지 Python으로 구현하고, 트리 높이, 대칭 트리, 최소 공통 조상(LCA) 문제를 재귀로 푸는 방법을 보여 줍니다.
-
개발 취업 실전 팁 | 이력서·포트폴리오·지원 전략부터 면접까지
신입·주니어·비전공 전환까지, 개발 취업 과정에서 반복되는 실수와 효과가 큰 습관을 정리합니다. 이력서·깃허브 정리, 공고 분석, 지원 타이밍, 과제·코테·면접까지 한 흐름으로 잡는 방법을 다룹니다.
-
개발자 기술 면접 준비: 알고리즘부터 시스템 설계까지
개발자 기술 면접을 코딩 테스트, 시스템 설계, CS 기초, 프로젝트 경험 네 영역으로 나누고, 필수 알고리즘 체크리스트와 풀이 전략, URL 단축 서비스 설계 예제, 자주 나오는 CS 질문과 답변 예시, STAR 방법론을 3개월 준비 로드맵으로 묶었습니다.
-
코딩 테스트 준비 전략: 알고리즘 학습 순서와 시험장 실전 팁
투 포인터·슬라이딩 윈도우·이진 탐색·그래프 탐색부터 DP·그리디·최단경로·위상정렬·트라이까지 개념과 실수 포인트를 풀어 쓰고, 자료구조·패턴·시간 배분·언어 선택으로 이어지는 코딩 테스트 준비 글입니다.
-
LeetCode 패턴: 두 포인터와 슬라이딩 윈도우 | 템플릿과 C++/Python
Minimum Window Substring, 3Sum, Container With Most Water 등 14개 LeetCode 문제로 두 포인터와 고정·가변 슬라이딩 윈도우 템플릿을 익히고, 이중 while이 O(n)인 이유와 단조성이 깨지면 패턴을 쓰면 안 되는 이유를 설명합니다.
-
코딩 테스트에서 시간 복잡도 줄이는 체크리스트 | TLE 탈출
코딩 테스트에서 시간 초과(TLE)가 났을 때 모든 쌍을 보는 중첩 루프, 반복되는 구간 합 계산, 선형 탐색, 쿼리마다 전체 순회를 차례로 점검해 누적 합·해시·세그먼트 트리·펜윅 트리로 바꾸는 5단계 체크리스트를 제공합니다.
-
알고리즘 최적화 실전 사례 | 코딩테스트 시간 초과(TLE) 해결기
TLE 사례, Big-O 정의·증명 스케치, 상각분석, 공간-시간 트레이드오프 예제, 캐시·분기예측, 프로덕션 패턴까지 알고리즘 최적화 총정리. 코딩테스트 합격과 실무 성능 개선을 동시에 해결하는 실전 가이드.
-
이진 탐색: 경계 조건, lower/upper bound, 결정 문제로 바꾸는 파라메트릭 서치
정렬된 배열에서 절반씩 범위를 줄이는 이진 탐색을 반복·재귀로 구현하고, lower bound와 upper bound로 원소 개수를 세는 법, 나무 자르기처럼 답을 직접 찾는 대신 결정 문제로 바꿔 푸는 파라메트릭 서치를 설명합니다.
-
BFS와 DFS: 큐·재귀로 구현하는 그래프 탐색과 최단 거리·연결 요소 문제
BFS는 큐로, DFS는 재귀와 스택으로 구현하면서 BFS로 가중치 없는 그래프의 최단 거리를 구하는 방법과 DFS로 연결 요소를 세는 방법을 미로 탈출·섬의 개수 문제로 익힙니다. Python 재귀 한도 문제도 다룹니다.
-
백트래킹: 가지치기로 모든 경우의 수를 줄이는 방법과 N-Queen·순열·조합
백트래킹 알고리즘의 핵심 패턴(선택-재귀-되돌리기)을 순열·조합·부분집합·N-Queen·스도쿠 예제로 정리합니다. 되돌리기 누락, 가지치기 누락, 중복 결과 같은 자주 겪는 실수와 해결법도 함께 다룹니다.
-
동적 프로그래밍(DP): 메모이제이션과 타뷸레이션, 점화식 세우는 법
피보나치 수열로 중복 계산 문제를 확인한 뒤, 메모이제이션(Top-Down)과 타뷸레이션(Bottom-Up)으로 같은 문제를 풀어 보고 1차원·2차원 DP와 배낭 문제에서 상태 정의, 점화식, 초기값을 세우는 순서를 설명합니다.
-
DP 패턴 정리: 1차원·2차원 DP, 배낭 문제, LIS 점화식 세우는 법
계단 오르기 같은 1차원 DP, 격자 경로와 LCS 같은 2차원 DP, 0-1 배낭과 무한 배낭, LIS의 O(n²)·O(n log n) 풀이까지 자주 나오는 DP 유형을 점화식과 Python 코드로 비교합니다.
-
DP 실전 문제 풀이: 1로 만들기·편집 거리·동전·LIS·배낭으로 점화식 연습
1로 만들기, 편집 거리, 동전 문제, LIS, 배낭 문제를 Bottom-Up과 Top-Down으로 직접 풀면서 상태 정의와 점화식 세우는 연습을 하고, 동전 문제에서 최소 개수뿐 아니라 사용한 동전까지 역추적하는 방법도 보여 줍니다.
-
그리디 알고리즘: 매 순간 최선을 선택하는 이유와 한계
그리디 알고리즘의 정당성 증명과 반례 찾기, 활동 선택·배낭 문제·최소 신장 트리 등 필수 유형을 실전 예제로 정리. 교환 논법(Exchange Argument)부터 프로그래머스·백준 문제까지 단계별로 학습.
-
투 포인터: O(n²) 탐색을 O(n)으로 줄이는 조건과 대표 문제
양 끝에서 좁혀 오는 방식과 같은 방향으로 함께 움직이는 방식, 두 가지 투 포인터 패턴으로 세 수의 합, 컨테이너 물 담기, 부분 배열 합 문제를 풀며 이중 루프를 O(n)으로 줄이는 조건을 설명합니다.
-
슬라이딩 윈도우로 부분 배열 문제 최적화하기
슬라이딩 윈도우는 연속 구간을 O(n)으로 다루는 기법입니다. 고정·가변 예제, 같은 방향 다중 포인터, 모노토닉 덱, 상각 분석, 관측·스트림 실무 패턴을 정리합니다. 연속 부분 배열이나 부분 문자열의 합·조건을 매번 처음부터 다시 계산하면 시간 초과가 나기 쉽습니다. 이 글에서는 윈도우를 한 칸씩 밀며 갱신하는 방식으로 복잡도를 줄이는 흐름을 단계적으로 익힐 수 있습니다.
-
스택과 큐: LIFO·FIFO 구현과 괄호 검사·BFS 같은 코딩 테스트 활용
스택(LIFO)과 큐(FIFO)를 Python list·deque와 C++ STL로 구현해 보고, 괄호 검사, 스택 두 개로 큐 만들기, 다음 큰 수, BFS 문제를 풀면서 list.pop(0)이 느린 이유와 C++ pop()이 값을 반환하지 않는 이유도 짚습니다.
-
해시 테이블: O(1) 탐색 원리, 충돌 처리, 코딩 테스트 활용 패턴
해시 함수와 체이닝·개방 주소법 충돌 처리, 부하율 관리가 평균 O(1) 탐색을 만드는 원리를 설명하고, Python dict·Counter·defaultdict로 Two Sum, 완주하지 못한 선수, 베스트앨범, 그룹 애너그램 문제를 풉니다.
-
기초 정렬 알고리즘: 버블·선택·삽입 정렬의 동작과 O(n²)인 이유
버블·선택·삽입 정렬을 Python과 C++로 구현하며 세 알고리즘이 모두 O(n²)인 이유와 안정성 차이를 비교하고, 거의 정렬된 데이터나 작은 배열에서 삽입 정렬이 지금도 실제로 쓰이는 이유를 설명합니다.
-
정렬 문제 풀이: 커스텀 비교 함수, 안정 정렬, 코딩 테스트 정렬 패턴
코딩 테스트 정렬 문제 풀이, 커스텀 key, 퀵·머지·힙·카운팅 정렬의 내부 동작과 프로덕션 정렬 패턴까지 정리합니다. 코딩 테스트에서 정렬은 문제 해결의 첫 단계인 경우가 많습니다. 후보를 점수·시간 순으로 줄이거나, 그리디·이진 탐색 전에 순서를 맞출 때 sort와 key만으로 조건을 표현하는 경우가 많습니다.
-
알고리즘 시리즈 목차 | 자료구조부터 DP·그리디까지 코딩 테스트 학습 순서
배열·스택·해시 테이블 같은 자료구조부터 정렬, 이진 탐색, BFS/DFS, DP, 그리디, 투 포인터, 슬라이딩 윈도우까지 알고리즘 시리즈 17편을 난이도 순으로 묶고, 입문·중급·집중 대비별 학습 경로를 제시합니다.
-
C++ 알고리즘 문제풀이 | 코딩테스트 필수 문제 10선
Two Sum, 이진 탐색, 최대 부분 배열 합, 동전 거스름돈, 섬의 개수, 유효한 괄호, LIS, 0/1 배낭, 다익스트라, 순열·조합까지 코딩테스트 단골 10문제를 C++ STL 풀이와 시간복잡도 분석으로 풀어 봅니다.
-
C++ 코딩 테스트 준비: 백준·프로그래머스 유형별 STL 활용과 입출력 최적화
백준과 프로그래머스에서 자주 나오는 정렬, 해시, 투 포인터, DP, BFS/DFS, 그리디, 백트래킹 문제를 C++ STL로 푸는 방법을 유형별로 정리하고, 입력 크기로 허용 복잡도를 가늠하는 법과 cin 입출력 최적화를 다룹니다.
-
C++ I/O 병목 줄이기: cin·mmap·io_uring 성능 비교
같은 로직인데 C++만 시간 초과가 나는 이유를 sync_with_stdio, cin.tie, endl의 버퍼 플러시로 설명하고 getchar 직접 파싱과 출력 버퍼링까지 단계별로 최적화합니다. 대용량 파일용 mmap과 liburing 기반 io_uring 예제도 다룹니다.
-
C++ 문자열 파싱이 병목일 때: stringstream·getline 대신 string_view 제로카피, 벤치마크
입력은 빨리 받았는데 split 이후 시간 초과가 나는 상황을 두고 stringstream·getline·find+substr·strtok·regex 방식의 차이를 비교합니다. string_view 제로카피 파싱, 따옴표 필드를 지원하는 CSV 파서, string_view 댕글링 같은 버그도 다룹니다.
-
C++ 코테용 STL 컨테이너/알고리즘 시간복잡도 치트시트 [#32-3]
코딩테스트에서 자료구조를 잘못 골라 시간 초과가 나지 않도록 vector·deque·list, map·unordered_map, priority_queue·stack·queue의 연산별 시간복잡도와 반복자 무효화 규칙을 표로 모았습니다. 문제 유형별 추천 조합과 흔한 실수도 담았습니다.