[Career] 내가 짜는 알고리즘 로드맵✨
알고리즘 학습 로드맵
백엔드 개발 취준을 위해 코딩 테스트를 준비하면서 체계적으로 알고리즘을 학습하기 위한 로드맵입니다.
언어 선택
백엔드 개발 취준을 하기로 선택하고 코딩 테스트를 준비하고 있기에 Java 언어에 좀 더 친숙해져야 합니다. Stream, Collection, 자료구조에 대해서 조금 더 알아가는 계기가 되었으면 좋겠다는 바람에 Java를 선택하였습니다.
Java를 선택한 이유
- 백엔드 개발 표준 언어: 많은 기업에서 Java를 백엔드 개발 언어로 사용
- 풍부한 자료구조: Collection Framework를 통해 다양한 자료구조 제공
- Stream API: 함수형 프로그래밍 스타일로 코드 작성 가능
- 코딩 테스트 지원: 대부분의 코딩 테스트 플랫폼에서 Java 지원
학습 단계별 로드맵
1단계: 기초 자료구조 및 Java 문법
Java 자료구조
-
Collection Framework: [[Java Collection Framework]]
- List (ArrayList, LinkedList)
- Set (HashSet, TreeSet)
- Map (HashMap, TreeMap)
- Queue, Stack
-
Stream API: [[Java Stream 정리!!!]]
- Stream 생성
- 중간 연산 (map, filter, sorted 등)
- 최종 연산 (collect, forEach, reduce 등)
-
Wrapper Class: [[Java Wrapper Class 란]]
- 기본 타입과 래퍼 클래스의 차이
- 오토박싱/언박싱
- 타입 변환
2단계: 기본 알고리즘
탐색 알고리즘
- DFS (깊이 우선 탐색): [[BFS, DFS, 백트래킹 정리]]
- BFS (너비 우선 탐색): [[BFS, DFS, 백트래킹 정리]]
- 백트래킹: [[BFS, DFS, 백트래킹 정리]]
정렬 알고리즘
- 버블 정렬, 선택 정렬, 삽입 정렬
- 퀵 정렬, 병합 정렬, 힙 정렬
- 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주차: 이분 탐색 및 고급 문제 풀이
목표
- 코딩 테스트에서 기본 문제는 빠르게 해결할 수 있는 수준
- 중급 문제는 시간 내에 해결할 수 있는 수준
- 고급 문제는 접근 방법을 이해하고 부분 점수를 받을 수 있는 수준
지속적인 학습과 연습이 핵심입니다! 화이팅! 💪