SWEA 알고리즘 - Stack, DFS, 동적 계획법
SWEA 알고리즘 - Stack, DFS, 동적 계획법
SWEA 알고리즘 - Stack, DFS, 동적 계획법
SW Expert Academy 파이썬 SW문제해결 기본 과정의 Stack 관련 고급 알고리즘 학습
Stack1 - 기본 개념
1. Stack 자료구조의 개념
- LIFO (Last In, First Out) 원리
- Stack의 기본 연산 (push, pop, peek)
- Python에서 Stack 구현 방법
- Stack의 활용 사례
2. Stack의 응용
- 괄호 검사
- 후위 표기법 계산
- 함수 호출 스택
- 되돌리기(Undo) 기능
3. Memoization (메모이제이션)
- 중복 계산 방지 기법
- 동적 계획법의 핵심 요소
- 메모리와 시간의 트레이드오프
- Python에서 메모이제이션 구현
4. DP (동적 계획법)
- 최적 부분 구조와 중복 부분 문제
- Top-down vs Bottom-up 접근법
- DP 테이블 설계
- 상태 전이 방정식
5. DFS (깊이 우선 탐색)
- 그래프 탐색 알고리즘
- 인접 리스트 방식: 메모리 효율적
- 인접 행렬 방식: 구현 간단
- 재귀와 스택을 이용한 구현
6. 관련 문제
Stack1 문제들
Stack2 - 고급 기법
1. 계산기
- 중위 표기법을 후위 표기법으로 변환
- 후위 표기법 계산
- 연산자 우선순위 처리
- 스택을 이용한 계산기 구현
2. 백트래킹 (Backtracking)
- 모든 가능한 해를 체계적으로 탐색
- 가지치기(Pruning)를 통한 최적화
- N-Queen 문제 해결
- 백트래킹의 시간 복잡도
3. 분할정복 (Divide and Conquer)
- 문제를 작은 단위로 분할
- 각 부분 문제 해결
- 결과를 결합하여 최종 해 도출
- 분할정복의 대표적 예시
4. 관련 문제
Stack2 문제들
학습 포인트
알고리즘 패턴
- Stack 활용: LIFO 특성을 이용한 문제 해결
- DFS 탐색: 깊이 우선으로 모든 경로 탐색
- DP 최적화: 중복 계산 제거로 성능 향상
- 백트래킹: 체계적인 해 탐색
성능 고려사항
- 시간 복잡도: O(2^n) vs O(n²) 최적화
- 공간 복잡도: 스택 오버플로우 방지
- 메모이제이션: 시간과 공간의 균형
실무 적용
- 컴파일러의 구문 분석
- 게임 AI의 경로 탐색
- 최적화 문제 해결
- 그래프 알고리즘 구현
Stack과 DFS, DP를 통해 복잡한 문제 해결 능력을 기를 수 있습니다.
This post is licensed under CC BY 4.0 by the author.