Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 1주차완료
- 파이썬
- 백준알고리즘2920번
- 시나공정보처리기사
- BFS알고리즘
- 크루스칼알고리즘
- Korean-NLP
- 연결리스트
- 최단거리알고리즘
- AIFFEL
- 작심삼개월
- 코딩테스트
- package-install
- 내돈내산
- FastCampus
- 프림알고리즘
- 코딩테스트인강
- DFS알고리즘
- 퀵정렬
- 인강
- 패스트캠퍼스
- 시간복잡도
- 트리구조
- 해쉬테이블
- 자료구조
- 환급챌린지
- 알고리즘
- 코딩테스트대비
- nqueen
- Ai
Archives
- Today
- Total
DevLog
[패스트캠퍼스 :: 코딩테스트 인강] 6주차 ② 재귀용법 본문
알고리즘/기술면접 완전 정복 올인원 패키지 Online
재귀 용법 - 01. 알고리즘 해결에 중요한 이해
재귀 용법 - 02. 알고리즘 해결에 중요한 재귀 호출 예제와 실습 - 1
재귀 용법 - 03. 알고리즘 해결에 중요한 재귀 호출 예제와 실습 - 2
재귀 용법은 개념은 정말 이해하기 쉬우면서도
활용하기에는 어렵게만 느껴지는 부분이다.
재귀 용법을 사용하면 속도도 빨라지고 더 좋은 알고리즘이 짜이는 것을 알고 있음에도
실질적으로 문제 해결에 사용해서 로직이 진행되는 과정이 생각하기 힘들 때가 많았다.
그래서 이번 강의는 더 중요하게 다가왔다.
재귀 용법 (recursive call, 재귀 호출)
고급 정렬 알고리즘엥서 재귀 용법을 사용하므로, 고급 정렬 알고리즘을 익히기 전에 재귀 용법을 먼저 익히기로 합니다.
1. 재귀 용법 (recursive call, 재귀 호출)
- 함수 안에서 동일한 함수를 호출하는 형태
- 여러 알고리즘 작성시 사용되므로, 익숙해져야 함
예제 - 시간 복잡도와 공간 복잡도
- factorial(n) 은 n - 1번의 factorial() 함수를 호출해서, 곱셈을 함
- 일종의 n-1번 반복문을 호출한 것과 동일
- factorial() 함수를 호출할 때마다, 지역변수 n 이 생성됨
- 시간 복잡도/공간 복잡도는 O(n-1) 이므로 결국, 둘 다 O(n)
# 일반적인 형태1
def function(입력):
if 입력 > 일정값: # 입력이 일정 값 이상이면
return function(입력 - 1) # 입력보다 작은 값
else:
return 일정값, 입력값, 또는 특정값 # 재귀 호출 종료
아무래도 재귀 용법이 정해진 알고리즘이라기보다는 활용될 수 있는 부분이기 때문에
다른 강의보다도 실습 문제가 많았다.
내가 느끼기에도 전혀 어려운 개념이 아니었음에도 다양한 코딩 문제를 해결할 때 쉽사리 적용이 되지 않는 개념이다.
적용을 하게 되면 로직이 꼬이면서 머리가 멈추는 그런 느낌... 아는가...
재귀 용법에 빨리 익숙해지고 싶다.
[패스트캠퍼스 100% 환급 챌린지 미션 중입니다.]
'IT 개발 > Algorithm 알고리즘' 카테고리의 다른 글
[패스트캠퍼스 :: 코딩테스트 인강] 7주차 ② 병합정렬 (0) | 2021.04.04 |
---|---|
[패스트캠퍼스 :: 코딩테스트 인강] 7주차 ① 동적 계획법, 퀵 정렬, 병합 정렬 (0) | 2021.04.03 |
[패스트캠퍼스 :: 코딩테스트 인강] 6주차 ① 선택정렬, 삽입정렬 (0) | 2021.03.27 |
[패스트캠퍼스 :: 코딩테스트 인강] 5주차 ② 정렬 / 버블 정렬 (0) | 2021.03.21 |
[패스트캠퍼스 :: 코딩테스트 인강] 5주차 ① 힙 (Heap) (0) | 2021.03.19 |