[Career] 내가 짜는 알고리즘 로드맵✨

25년 07월 09일 16:55Career

알고리즘 학습 로드맵

백엔드 개발 취준을 위해 코딩 테스트를 준비하면서 체계적으로 알고리즘을 학습하기 위한 로드맵입니다.

언어 선택

백엔드 개발 취준을 하기로 선택하고 코딩 테스트를 준비하고 있기에 Java 언어에 좀 더 친숙해져야 합니다. Stream, Collection, 자료구조에 대해서 조금 더 알아가는 계기가 되었으면 좋겠다는 바람에 Java를 선택하였습니다.

Java를 선택한 이유

  1. 백엔드 개발 표준 언어: 많은 기업에서 Java를 백엔드 개발 언어로 사용
  2. 풍부한 자료구조: Collection Framework를 통해 다양한 자료구조 제공
  3. Stream API: 함수형 프로그래밍 스타일로 코드 작성 가능
  4. 코딩 테스트 지원: 대부분의 코딩 테스트 플랫폼에서 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. 1주차: Java 기본 문법 및 Collection Framework
  2. 2주차: DFS, BFS 기본 문제 풀이
  3. 3주차: 정렬 알고리즘 및 누적합
  4. 4주차: 그리디 알고리즘 기초
  5. 5주차: 다이나믹 프로그래밍 기초
  6. 6주차: 이분 탐색 및 고급 문제 풀이

목표

  • 코딩 테스트에서 기본 문제는 빠르게 해결할 수 있는 수준
  • 중급 문제는 시간 내에 해결할 수 있는 수준
  • 고급 문제는 접근 방법을 이해하고 부분 점수를 받을 수 있는 수준

지속적인 학습과 연습이 핵심입니다! 화이팅! 💪