[Career] 알고리즘 학습 로드맵
알고리즘 학습 로드맵
백엔드 개발 취준을 위해 코딩 테스트를 준비하면서 체계적으로 알고리즘을 학습하기 위한 로드맵입니다.
언어 선택
백엔드 개발 취준을 하기로 선택하고 코딩 테스트를 준비하고 있기에 Java 언어에 좀 더 친숙해져야 합니다. Stream, Collection, 자료구조에 대해서 조금 더 알아가는 계기가 되었으면 좋겠다는 바람에 Java를 선택하였습니다.
Java를 선택한 이유
- 백엔드 개발 표준 언어: 많은 기업에서 Java를 백엔드 개발 언어로 사용
- 풍부한 자료구조: Collection Framework를 통해 다양한 자료구조 제공
- Stream API: 함수형 프로그래밍 스타일로 코드 작성 가능
- 코딩 테스트 지원: 대부분의 코딩 테스트 플랫폼에서 Java 지원
학습 단계별 로드맵
1단계: 기초 자료구조 및 Java 문법
Java 자료구조
-
Collection Framework
- List (ArrayList, LinkedList)
- Set (HashSet, TreeSet)
- Map (HashMap, TreeMap)
- Queue, Stack
-
Stream API
- Stream 생성
- 중간 연산 (map, filter, sorted 등)
- 최종 연산 (collect, forEach, reduce 등)
-
Wrapper Class
- 기본 타입과 래퍼 클래스의 차이
- 오토박싱/언박싱
- 타입 변환
2단계: 기본 알고리즘
탐색 알고리즘
- DFS (깊이 우선 탐색)
- BFS (너비 우선 탐색)
- 백트래킹
정렬 알고리즘
- 버블 정렬, 선택 정렬, 삽입 정렬
- 퀵 정렬, 병합 정렬, 힙 정렬
- Java의
Arrays.sort(),Collections.sort()활용
누적합 알고리즘
- Prefix Sum
- 1차원 누적합
- 2차원 누적합
- 구간합 계산
3단계: 중급 알고리즘
그리디 알고리즘
- 최적의 선택을 반복하는 알고리즘
- 활동 선택 문제, 거스름돈 문제 등
다이나믹 프로그래밍 (DP)
- 메모이제이션
- 탑다운 vs 바텀업
- 1차원 DP, 2차원 DP
이분 탐색
- 정렬된 배열에서 특정 값 찾기
- 파라메트릭 서치
- Java의
Arrays.binarySearch()활용
4단계: 고급 알고리즘
그래프 알고리즘
- 최단 경로 알고리즘 (다익스트라, 플로이드-워셜)
- 최소 신장 트리 (크루스칼, 프림)
- 위상 정렬
트리 알고리즘
- 이진 트리 순회
- 트리 DP
- 세그먼트 트리
문자열 알고리즘
- KMP 알고리즘
- 라빈-카프 알고리즘
- 트라이 (Trie)
학습 방법
1. 이론 학습
- 각 알고리즘의 개념과 동작 원리 이해
- 시간 복잡도와 공간 복잡도 분석
- Java로 구현 방법 학습
2. 문제 풀이
- 백준, 프로그래머스, LeetCode 등에서 문제 풀이
- 단계별로 난이도를 높여가며 학습
- 유형별로 분류하여 집중 학습
3. 복습 및 정리
- 풀었던 문제를 다시 풀어보기
- 다른 사람의 풀이와 비교 분석
- 블로그에 정리하여 지식 체계화
추천 학습 순서
- 1주차: Java 기본 문법 및 Collection Framework
- 2주차: DFS, BFS 기본 문제 풀이
- 3주차: 정렬 알고리즘 및 누적합
- 4주차: 그리디 알고리즘 기초
- 5주차: 다이나믹 프로그래밍 기초
- 6주차: 이분 탐색 및 고급 문제 풀이
목표
- 코딩 테스트에서 기본 문제는 빠르게 해결할 수 있는 수준
- 중급 문제는 시간 내에 해결할 수 있는 수준
- 고급 문제는 접근 방법을 이해하고 부분 점수를 받을 수 있는 수준
지속적인 학습과 연습이 핵심입니다! 화이팅! 💪